当前位置:  开发笔记 > 编程语言 > 正文

C在使用scanf时动态分配struct,seg fault

如何解决《C在使用scanf时动态分配struct,segfault》经验,为你挑选了1个好方法。



1> Haris..:

你分配了内存struct.

但你没有分配内存p->name指向的内存


将其添加到您的代码中.

struct Person *p = malloc(sizeof(struct Person));
p->name = malloc(100);


编辑

不应该在结构中显式分配任何类型的空间.

当你做到了

struct Person *p = malloc(sizeof(struct Person));

空间被分配nameage两者.但请注意,这name是一个指针变量.已为指针变量分配空间,但不为指针指向的位置分配空间.

就像你做的那样

char* p;

p创建变量,为其分配空间,但如果要使用它,则有两个选项.

1)使其指向一些现有的已分配内存

char* p;
char arr[10];
p = arr;

2)或者在它指向的位置分配内存.

char* p = malloc(sizeof(char));

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有