第5次扫描后出现分段错误
该代码在确切的第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://*.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