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)
你试过在valgrind下运行吗?如果你有内存损坏,腐败的时间和错误的时间往往相隔很远.
想象一下,一些很少使用的结构被踩到了.一切都会好的,直到你尝试使用那个结构,此时一切都会崩溃.你的代码中几乎肯定有一个内存问题.