第 5 次扫描后出现分段错误

Segmentation Fault after 5th scanf

此代码在输入的第 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]); 

 }`

假设 sizeof (int)sizeof (int*) 相同

m=(int**)malloc(n*sizeof(int));

试试这个

m = malloc(n * sizeof *m);

你的错误:你在需要 int pointers

的时候为 ints 分配了内存

(因为您的 m 数组将保存其他 int 数组的指针)

错误:

m=(int**)malloc(n*sizeof(int));

正确:

m=(int**)malloc(n*sizeof(int*));