有关堆栈泄露的调试

russilong 2006-04-13 04:07:05
做较大的数值计算的程序编写时,往往会开许多的动态数组,并且数组中的元素很多,这样弄不好一进入主程序就会遇到堆栈泄露的问题,不知道有经验的如何处理这里的动态数组?如果遇到这些问题,有什么调试技巧?我对VC调试并不熟悉,可以说得详细些。多谢!
...全文
273 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bruceleexiaokan 2006-04-13
  • 打赏
  • 举报
回复
智能指针是不错的选择,不过好的架构设计是至关重要的
strangerryf 2006-04-13
  • 打赏
  • 举报
回复
把下面的这个memleak.h东西贴到你的代码,可以在vc的IDE的debug模式看到内存泄漏的地方。具体查MSDN

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>

class leak_reporter
{
private:
static leak_reporter instance;
leak_reporter()
{
_CrtDumpMemoryLeaks();
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_DEBUG );
}
};
leak_reporter leak_reporter::instance;
yuanchuang 2006-04-13
  • 打赏
  • 举报
回复
如果你是在类里面的话,可以把释放放在一个private level的member function里面
要释放时,调用这个函数。
yuanchuang 2006-04-13
  • 打赏
  • 举报
回复
如果你是在类里面的话,可以把释放放在一个private level的member function里面
要释放时,调用这个函数。
iamwiner 2006-04-13
  • 打赏
  • 举报
回复
楼上说的都对.
popy007 2006-04-13
  • 打赏
  • 举报
回复
对于需要动态添加数据的数值计算程序,可以使用STL中的容器。而且标准库中

也有很多数值计算用的算法(在numeric头文件中)。
sankt 2006-04-13
  • 打赏
  • 举报
回复
首先纠正一下概念
堆栈就是栈,栈里面存放的是自动变量,有系统自动释放,不会造成栈泄漏

动态分配是在堆上,一个原则就是:
new 和 delete 匹配出现,方能杜绝内存泄漏
healer_kx 2006-04-13
  • 打赏
  • 举报
回复
动态数组,其实你做的只是数学计算的话,细心就可以将每一个new的delete掉。
另外,也可以试一试具有引用计数性质的智能指针来维护你的数组。
特别推荐的是Loki的SmartPtr<,,,>具体的模板参数你可以精心选择。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧