结构的c指针在执行时导致段错误

时间:2015-03-15 18:32:29

标签: c pointers memset

我在memset中遇到了一个段错误,我看到任何地方都不知道为什么?谁能告诉我什么是错的?

typedef struct Ircsend1_struct{
  char type;
  char name[32];
}ircsend1_struct;

ircsend1_struct *ircpack;

char *pBuffer;
ircpack = (ircsend1_struct *)pBuffer;
memset(ircpack,0x00,sizeof(ircsend1_struct));

2 个答案:

答案 0 :(得分:3)

作业

ircpack = (ircsend1_struct *)pBuffer;  

错了。 pBuffer未初始化。 ircpack指向未知位置。因此,声明

memset(ircpack,0x00,sizeof(ircsend1_struct));  

将调用未定义的行为。

答案 1 :(得分:2)

因为您的指针未初始化,可能意味着

ircsend1_struct irpack;
char *pBuffer = &irpack;

memset(pBuffer, 0, sizeof(ircsend1_struct));