此代码在输入的第5行给出了分段错误。 如果n <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]);
}`
答案 0 :(得分:4)
假设sizeof (int)
和sizeof (int*)
相同
m=(int**)malloc(n*sizeof(int));
试试这个
m = malloc(n * sizeof *m);
答案 1 :(得分:0)
您的错误:在需要int
s
int pointer
分配内存
(因为你的m
数组将保存其他int数组的指针)
错误:
m=(int**)malloc(n*sizeof(int));
正确的:
m=(int**)malloc(n*sizeof(int*));