有人能帮我解释一下为什么我的这部分代码不能工作吗?
typedef struct {
char *something;
} random;
random *rd;
rd->something = calloc(40, sizeof(char)); // This is the line which crashes
strncpy(rd->something, aChar, 40);
如果我这样写程序,它就会工作:
random rd;
rd.something = calloc(40, sizeof(char));
strncpy(rd.something, aChar, 40);
但我认为这在处理内存时是错误的,这就是为什么我希望在第一个场景中得到帮助。
最佳答案
没有为rd指向的结构分配内存。
尝试:
typedef struct {
char *something;
} random;
random *rd = malloc (sizeof(random));
rd->something = calloc(40, sizeof(char)); // This is the line which crashes
strncpy(rd->something, aChar, 40);
关于c - 指向结构体中的指针的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25266043/