Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
malloc/calloc调用上的奇怪SIGABORT_C_Dynamic Allocation - Fatal编程技术网

malloc/calloc调用上的奇怪SIGABORT

malloc/calloc调用上的奇怪SIGABORT,c,dynamic-allocation,C,Dynamic Allocation,使用gdb运行我的程序,我得到以下结果: fem.o:malloc.c:3096:sYSMALLOc: 断言`(old_top==((mbinptr) (((char*)和((av)->垃圾箱[((1)-1)* 2] )-(结构)的内置偏移量 malloc_chunk,fd))&&old_size==0) ||((无符号长)(旧尺寸)>= (无符号长)(内置偏移量) (结构malloc_chunk, fd_nextsize))+((2*(sizeof(size_t))) -1)&((2*(siz

使用gdb运行我的程序,我得到以下结果:

fem.o:malloc.c:3096:sYSMALLOc: 断言`(old_top==((mbinptr) (((char*)和((av)->垃圾箱[((1)-1)* 2] )-(结构)的内置偏移量 malloc_chunk,fd))&&old_size==0) ||((无符号长)(旧尺寸)>= (无符号长)(内置偏移量) (结构malloc_chunk, fd_nextsize))+((2*(sizeof(size_t))) -1)&((2*(sizeof(size_t))-1)&((old_top)->size&0x1)&& ((无符号长)旧的结尾和页面掩码)== “0)”失败

程序接收信号SIGABRT, 流产了。0xb7fe1424英寸 __内核调用()

我发现此错误出现在以下代码之后:

problem->y0 = (double *)calloc(n_tot, sizeof(double));
问题是一个具有双*y0作为成员的结构

在前面的函数中,我这样做

problem = (fem_problem *)calloc(1, sizeof(fem_problem));
我没有得到任何错误,也没有问题==NULL

有什么建议吗

加:


我已经检查了n_tot的内容,它的编号正确

可能有很多问题,例如:

  • n_tot
    的值可能是垃圾

  • 您已经在分配的块之外进行了写入,这样做会破坏用于维护堆的数据结构


断言告诉您,堆内部数据结构已损坏,可能是由于您在某个点写入的数据超出了分配块的边界。尝试运行,看看它是否能告诉您哪里出了问题。

请通过缩进4个空格(使用
{}
按钮)格式化代码。提交前预览问题。在calloc调用前检查n_tot,它包含正确的号码。我不理解第二点:(如果您分配了,比如说,100个字节,并且您写入的位置从一开始就有150个字节(或者在它前面,但可能性较小),那么您可能已经覆盖了用于其他事情的数据。