你分配了内存struct
.
但你没有分配内存p->name
指向的内存
将其添加到您的代码中.
struct Person *p = malloc(sizeof(struct Person)); p->name = malloc(100);
不应该在结构中显式分配任何类型的空间.
当你做到了
struct Person *p = malloc(sizeof(struct Person));
空间被分配name
和age
两者.但请注意,这name
是一个指针变量.已为指针变量分配空间,但不为指针指向的位置分配空间.
就像你做的那样
char* p;
p
创建变量,为其分配空间,但如果要使用它,则有两个选项.
1)使其指向一些现有的已分配内存
char* p; char arr[10]; p = arr;
2)或者在它指向的位置分配内存.
char* p = malloc(sizeof(char));