当我新建空间时,一个非常奇怪的分段错误

xun*_*ang 1 c++ segmentation-fault

当我运行我的代码时,存在分段错误.我使用gdb跟踪我的代码并找到下面的错误代码:

(gdb)  
30      wgt_indx_src = new int [num_wgts];

(gdb) 

Program received signal SIGSEGV, Segmentation fault.
0x0000003735e7201e in _int_malloc () from /lib64/libc.so.6
Run Code Online (Sandbox Code Playgroud)

更重要的是,在我的情况下,num_wgts是41472.我尝试如果它小于12398就可以了,但是当它设置为12399时,存在一个sefmentation故障.

我使用valgrind并获得下面的结果:我想问最后两行是否意味着

同样的指示?

==19944== Invalid free() / delete / delete[]
=19944==    at 0x4A04DAC: operator delete[](void*) (vg_replace_malloc.c:256)
==19944==    by 0x4039C1: main (main.C:137)
==19944==  Address 0x4C36030 is 0 bytes inside a block of size 65,536 free'd
==19944==    at 0x4A04DAC: operator delete[](void*) (vg_replace_malloc.c:256)
=19944==    by 0x4032FB: grid::~grid() (grid.C:208)
==19944==    by 0x403929: main (main.C:127)
Run Code Online (Sandbox Code Playgroud)

Pau*_*bel 5

你试过在valgrind下运行吗?如果你有内存损坏,腐败的时间和错误的时间往往相隔很远.

想象一下,一些很少使用的结构被踩到了.一切都会好的,直到你尝试使用那个结构,此时一切都会崩溃.你的代码中几乎肯定有一个内存问题.