2011-11-18 45 views
0

我打电话给我的程序,它是从标准输入scanf函数和点为int *分割故障

int main() { 
    int* s; 
    derp(s); 
    return 0; 
} 

void derp(int *size) { 
    scanf("%d", size); 
} 

读了一堆FO整数这是为什么代码造成分段错误?

回答

9
int* s; 
derp(s); 

s指的是什么?随机垃圾内存,因为它没有初始化。因为你需要初始化小号

int* s = malloc(sizeof(int)); 
derp(s); 
free(s); 
3

:你应该这样做,而不是:

int s; 
derp(&s); 

,或者您可以使用分配的存储malloc空间。

补充一点:

s = malloc(sizeof(int)); 

记住free(s)时,即可大功告成。

0

需要使用malloc()进行初始化。就像现在一样,s指向记忆中的某个随机废话。