我调用我的程序,它是从标准输入中读取一堆整数
int main() {
int* s;
derp(s);
return 0;
}
void derp(int *size) {
scanf("%d", size);
}
为什么此代码会导致分段错误?
答案 0 :(得分:9)
int* s;
derp(s);
s
指向什么?随机垃圾内存,因为它没有初始化。你应该这样做:
int s;
derp(&s);
或者您可以使用malloc
分配存储空间:
int* s = malloc( sizeof(int) );
derp(s);
free(s);
答案 1 :(得分:3)
因为你需要初始化s。
添加:
s = malloc(sizeof(int));
完成后请记得free(s)
。
答案 2 :(得分:0)
。就像现在一样,s指向内存中的某些随机垃圾。