第 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 pointer
s
的时候为 int
s 分配了内存
(因为您的 m
数组将保存其他 int 数组的指针)
错误:
m=(int**)malloc(n*sizeof(int));
正确:
m=(int**)malloc(n*sizeof(int*));
此代码在输入的第 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 pointer
s
int
s 分配了内存
(因为您的 m
数组将保存其他 int 数组的指针)
错误:
m=(int**)malloc(n*sizeof(int));
正确:
m=(int**)malloc(n*sizeof(int*));