有人能帮我解释一下为什么我的这部分代码不能工作吗?

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/

10-12 07:33