这可能是由于堆的损坏,这表示cvector.exe或它已加载的任何DLL中的错误

时间:2010-07-12 08:40:39

标签: c memory-leaks free

我在测试程序中犯了很多错误!!!

debug src:http://www.cppblog.com/Files/mymsdn/cvector-windows-has-triggered-a-breakpoint-in-cvector.zip

正确的版本:http://www.cppblog.com/Files/mymsdn/cvector-svn-version-10.zip

我正在尝试编写一个C语言版本的vector struction。

如果我尝试运行(在Microsoft Visual Studio 2008中,默认快捷方式是CTRL + F5)我的代码。它可以作为正确的逻辑执行输出正确的结果。

但是如果我尝试在调试模式下运行它(在Microsoft Visual Studio 2008中,默认快捷方式是F5)。它会导致一个问题:(它来自输出窗口,并且还有一个警报框来报告它)

  

HEAP [cvector.exe]:HEAP:免费堆块393168在被释放后在393190修改   Windows在cvector.exe中触发了断点。

     

这可能是由于堆的损坏,这表示cvector.exe或其加载的任何DLL中存在错误。

     

这也可能是由于用户在cvector.exe有焦点时按下F12。

     

输出窗口可能包含更多诊断信息。

error http://www.cppblog.com/images/cppblog_com/mymsdn/3630/o_windows-has-triggered-a-breakpoint-in-cvector.png

2 个答案:

答案 0 :(得分:4)

此错误表示您已写入您实际上并未“拥有”的内存地址 - 例如,您在释放后写入内存,或者在您实际分配new或{的区域之外写入内存{1}},或通过一个完全错误的指针。

答案 1 :(得分:1)

检查您的调试设置。关闭“非托管代码调试”和“SQL Server调试”。

当我使用Oracle组件获取此功能时,这对我有用。如果我一直打到继续,没有中断错误,程序继续进行。关闭这些调试选项让它继续运行,程序现在可以运行。