【发布时间】:2011-07-28 20:40:35
【问题描述】:
不知道为什么我在这里遇到分段错误:
//I define the variables used for input
int *numberOfDonuts;
numberOfDonuts = (int *)malloc(sizeof(int));
char *charInput;
charInput = (char *)malloc(sizeof(char));
int *numberOfMilkshakes;
numberOfMilkshakes = (int *)malloc(sizeof(int));
//Then attempt to read input
scanf("%c %d %d", &*charInput, &*numberOfDonuts, &*numberOfMilkshakes);
然后我在这条线上得到一个分段错误。无法弄清楚我做错了什么?
【问题讨论】:
-
我没有看到这段代码有任何段错误。您可以尝试编译您的程序而不进行优化(例如
gcc -Wall -W -g program.c)吗?启用优化后,调试器可能不会将您带到发生段错误的确切行。 -
既然你不检查来自
malloc()的返回值,你有没有可能已经搞砸了内存分配系统并在这里访问空指针? -
如果删除所有出现的
&*会发生什么,即将其更改为scanf("%c %d %d", charInput, numberOfDonuts, numberOfMilkshakes); -
请不要从
malloc(或calloc或realloc)转换返回值,C语言中不需要,它可以隐藏问题。
标签: c malloc segmentation-fault scanf