我打电话给我的程序,它是从标准输入scanf函数和点为int *分割故障
int main() {
int* s;
derp(s);
return 0;
}
void derp(int *size) {
scanf("%d", size);
}
读了一堆FO整数这是为什么代码造成分段错误?
我打电话给我的程序,它是从标准输入scanf函数和点为int *分割故障
int main() {
int* s;
derp(s);
return 0;
}
void derp(int *size) {
scanf("%d", size);
}
读了一堆FO整数这是为什么代码造成分段错误?
int* s;
derp(s);
s
指的是什么?随机垃圾内存,因为它没有初始化。因为你需要初始化小号
int* s = malloc(sizeof(int));
derp(s);
free(s);
:你应该这样做,而不是:
int s;
derp(&s);
,或者您可以使用分配的存储malloc
空间。
补充一点:
s = malloc(sizeof(int));
记住free(s)
时,即可大功告成。
需要使用malloc()进行初始化。就像现在一样,s指向记忆中的某个随机废话。