Microsoft Visual C++ 2008 Express でコンパイルして実行すると、次の行でクラッシュするプログラムがあります。
comparison_vectors = new vec_element[(rbfnetparams->comparison_vector_length)+1];
エラー Unhandled exception at 0x7c93426d in myprog.exe: 0xC0000005: Access violation reading location 0x00000000 で
rbfnetparams->comparison_vector_length
4に評価され(デバッガーで実行してチェックインする必要があります)、テストとして行を次のように変更すると、ここでまだクラッシュします。
comparison_vectors = new vec_element[5];
vec_element
いくつかの int、double、およびいくつかの bool を持つ構造体ですが、メソッドやコンストラクターはありません。new を malloc に置き換えると実行されますが、別の場所で別の new でクラッシュします。この行が実行されるたびにクラッシュするわけではなく、たまにしかクラッシュしませんが、毎回この行を同じ回数繰り返した後にクラッシュするようです。プログラムのこの時点でのメモリ使用量はわずか 10MB です。
同じプログラムが Solaris の gcc の下でコンパイルおよび実行されるため、これは奇妙になります。通常、Windows よりもはるかに多くのエラーが表示されます。
これをデバッグする方法について途方に暮れているので、助けていただければ幸いです。