該代碼在確切的第5行輸入處給出了分段錯誤。 如果n < 5或在調試器中一切正常。第5次掃描後出現分段錯誤
scanf("%d %d",&n,&x);
m=(int**)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
m[i]=(int*)malloc(2*sizeof(int));
}
for(i=0;i<n;i++)
{
scanf("%d %d",&m[i][0],&m[i][1]);
}`
該代碼在確切的第5行輸入處給出了分段錯誤。 如果n < 5或在調試器中一切正常。第5次掃描後出現分段錯誤
scanf("%d %d",&n,&x);
m=(int**)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
m[i]=(int*)malloc(2*sizeof(int));
}
for(i=0;i<n;i++)
{
scanf("%d %d",&m[i][0],&m[i][1]);
}`
假設sizeof (int)
和sizeof (int*)
是相同的
m=(int**)malloc(n*sizeof(int));
試試這個
m = malloc(n * sizeof *m);
你的錯誤:你在int
小號分配內存,而你需要int pointer
小號
(如你的m
陣列將要舉辦的其他INT數組指針)
錯誤:
m=(int**)malloc(n*sizeof(int));
正確:
m=(int**)malloc(n*sizeof(int*));
不要在C中投入'malloc'的結果! – 2015-02-07 16:43:05
爲什麼?如果它是C++?有什麼不同? – SomethingSomething 2015-02-07 23:46:45
謝謝你的重要評論!我剛剛看到這篇文章:http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc – SomethingSomething 2015-02-07 23:50:07
不要用C投malloc'的'的結果! – 2015-02-07 16:43:24