cod*_*rAJ -1 c malloc segmentation-fault dynamic-arrays data-structures
此代码给出了分段错误.在GDB调试时,它给出了这个错误:
"程序收到信号SIGSEGV,分段错误.在_IO_vfscanf_internal中的0x00007ffff7a6dde5(s =,格式=,argptr = argptr @ entry = 0x7fffffffdba8,errp = errp @ entry = 0x0)at vfscanf.c:1902 1902 vfscanf.c:没有这样的文件或目录. "
void readData()
{
int **arr,m;
scanf("%d",&m);
arr = (int **)malloc(sizeof(int)*m);
for(int i=0;i<m;i++)
{
arr[i] = (int *)malloc(sizeof(int) * 2);
}
for(int i=0;i<m;i++)
{
printf("..%d ..\n",i); // if m = 20 then running only 12 times
scanf("%d %d",&arr[i][0],&arr[i][1]);
}
}
int main()
{
readData();
}
Run Code Online (Sandbox Code Playgroud)
如果m = 20那么,第二个循环只运行12次然后给出分段错误.第一个循环运行20次. 请帮帮我.
arr = (int **)malloc(sizeof(int)*m);
Run Code Online (Sandbox Code Playgroud)
这应该是
arr = malloc(sizeof(int*)*m);
Run Code Online (Sandbox Code Playgroud)
因为你需要分配m指针,而不是m整数.或更好,
arr = malloc(sizeof(*arr)*m);
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,不要转换malloc的结果.)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |