【发布时间】:2011-12-03 15:34:12
【问题描述】:
我在尝试编译我的程序时遇到堆损坏错误。有问题的代码是一个指针
cparticle * particles.
初始化为NULL,然后设置为
particles = new cparticle[amount]
我只在析构函数中使用了一次删除,它导致窗口触发断点。我试图使用应用程序验证器,它给了我这个信息:
===========================================================
VERIFIER STOP 0000000000000013: pid 0x17C0: first chance access violation for current stack trace
000000001D54A0A4 : Invalid address being accessed
0000000055741DC6 : Code performing invalid access
000000000025E9D0 : Exception record. Use .exr to display it.
000000000025E4E0 : Context record. Use .cxr to display it.
===========================================================
This verifier stop is continuable.
After debugging it use `go' to continue.
===========================================================
=======================================
VERIFIER STOP 00000013: pid 0x17C0: First chance access violation for current stack trace.
1D54A0A4 : Invalid address causing the exception.
55741DC6 : Code address executing the invalid access.
001DF30C : Exception record.
001DF35C : Context record.
=======================================
This verifier stop is continuable.
After debugging it use `go' to continue.
=======================================
我不确定自己做错了什么,因此我们将不胜感激。
【问题讨论】:
-
除非我们看到更多代码,否则我们很难调试它。
-
显示代码有助于找出问题所在。
-
同意@Mysticial 和@Vinzenz。作为第一个问题;你用的是
delete还是delete []? -
需要澄清一下。首先 - 当您运行程序时会发生这种情况,或者(我认为您错误地写了)当您 compile 它时会发生这种情况吗?第二 - 发布您的构造函数和析构函数逻辑(如果不是整个类)。通常,向 dtor 添加一个“cout”会有所帮助,这样您就可以判断是否发生了一些意外的额外删除。
-
对不起,我运行程序时发生了。析构函数只是删除[]粒子,构造函数只是复制输入和粒子= NULL;粒子 = 新 cparticle[数量];
标签: c++ heap-corruption