我有一个程序,当使用 Microsoft Visual C++ 2008 Express 编译运行时会崩溃
comparison_vectors = new vec_element[(rbfnetparams->comparison_vector_length)+1];
在 myprog.exe 中的 0x7c93426d 处出现错误未处理的异常:0xC0000005:访问冲突读取位置 0x00000000
rbfnetparams->comparison_vector_length
评估为 4(应该这样做并在调试器中检查),当我将行更改为测试时,事情仍然在这里崩溃:
comparison_vectors = new vec_element[5];
vec_element
是一个具有多个整数、双精度和几个布尔值的结构,但没有方法或构造函数。如果我用 malloc 替换 new ,事情就会运行,但随后会在其他地方的另一个 new 上崩溃。每次运行这条线时它都不会崩溃,只是有时会崩溃,但似乎在每次这条线的迭代次数相同之后都会崩溃。此时程序中的内存使用量仅为 10MB。
这变得很奇怪,因为在 Solaris 上的 gcc 下编译和运行同一个程序,这通常比 Windows 显示的错误多得多。
任何帮助将不胜感激,因为我不知道如何调试这个。