New*_*bie 6 c++ opengl windows-xp visual-studio-2008
我不知道该怎么办......它毫无希望.我已经厌倦了猜测导致崩溃的原因.最近我注意到一些opengl调用在一些gfx卡上随机崩溃程序.所以我现在变得非常偏执,什么可能导致崩溃.这次崩溃的坏处是它只在使用该程序很长时间后崩溃,所以我只能猜出是什么问题.
我无法记住我对程序造成的可能导致崩溃的更改,已经很长时间了.但幸运的是,以前的版本没有崩溃,所以我可以只复制一些代码,浪费10个小时,看看它开始崩溃...我不认为我想这样做.
程序崩溃后,我连续5次处理相同的文件,每次在进程中使用大约200兆字节的内存.在阅读过程中和之后,它会随机崩溃.
我创建了一个"安全"的free()函数,它检查指针是否为非NULL,然后释放内存,然后将指针设置为NULL.这不是应该怎么做的?
我看到了任务管理器的内存使用情况,就在它崩溃之前它开始吃的内存比平常多2倍.每次加载文件时,程序加载速度也会呈指数级增长; 最初的几个负载看起来并没有显得慢得多,但随后它开始迅速加倍负载速度.这应该告诉我有关崩溃的信息?
另外,我是否必须使用clear()手动释放c ++向量?或者它们在使用后自动释放,例如,如果我在函数内部分配向量,那么每次函数结束时它是否会被释放?我没有在向量中存储指针.
-
简而言之:我想学会尽可能快地捕捉该死的虫子,我该怎么做?使用Visual Studio 2008.
在复杂操作之后的某个时间发生的“随机”崩溃几乎肯定是堆损坏的结果。堆损坏 bug 很糟糕,因为它们通常表现在距离实际导致 bug 的地方很远的地方。由于您使用的是 Windows,我的建议是使用Application Verifier,它可以从 MS 免费下载。
启动 AV,将其配置为观看您的节目,然后打开所有与内存相关的选项。然后在调试器下运行您的程序。(这两件事会让你的程序运行得非常慢。)AV 所做的额外检查有望导致你的程序在与你迄今为止所看到的不同的地方崩溃,但这将是真正原因的位置错误。
| 归档时间: |
|
| 查看次数: |
8993 次 |
| 最近记录: |