私のコードを実行すると、セグメンテーションフォールトがあります。 私は私のコードをトレースし、以下のエラーコードを検索するために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
何、num_wgtsは、私の場合は41472です。私はそれが12398よりも小さい場合はそれを試みますが、それは12399として設定すると、sefmentation faultが存在します。
私はvalgrindのを使用し、以下の結果が得られます。私は最後の2行が
同じ命令を意味するかどうか尋ねるしたいですか?
==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)
あなたはおそらく、プログラム内のどこかでヒープを破壊しました。これは、 'malloc'のオブジェクトの境界を書きとめているためです。 – japreiss
@japreiss: "wgt_indx_src"は定義されていて使用されていないと確信しています。 – xunzhang