c++ builder XE10 中如何检测内存泄漏

draculamx 2019-06-09 05:51:02
网上找了一圈,没找到,提到了一个FastMM,也不知道怎么用。。大家一般是怎么检测内存泄漏的???
...全文
2670 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2019-06-15
  • 打赏
  • 举报
回复
那是什么原因呢?重装一遍IDE?你把RTL和LINK WITH PACKAGE都打上勾试试?
ooolinux 2019-06-15
  • 打赏
  • 举报
回复
引用 50 楼 draculamx 的回复:
那是什么原因呢?重装一遍IDE?你把RTL和LINK WITH PACKAGE都打上勾试试?
以后再说了~那个是默认的。
ooolinux 2019-06-14
  • 打赏
  • 举报
回复
CodeGuard设置没问题,我把代码放在OnCreate里也一样,跟没有检测到内存泄露一样。
ooolinux 2019-06-14
  • 打赏
  • 举报
回复
电脑不是裸奔,不知道是不是exe被放入沙盒里运行了?但是会生成.cgl文件。
ooolinux 2019-06-14
  • 打赏
  • 举报
回复
引用 44 楼 draculamx 的回复:
我传了4张图,怎么只有两张。。。


图都看到了~
我也是10.2,本来关闭程序的时候会弹出一个窗口报告“CodeGuard detected error(s) in the program. A log file will be created”,
然后Debug目录下会有一个同名的.cgl文件,里面记录了错误的代码所在的函数及行数,但是IDE左下角不会弹出CodeGuard Log窗口,View里手动打开该窗口也是空的。
现在的问题是,关闭程序时错误报告窗口都不弹出了,相应地.cgl文件里也没有记录错误的代码所在函数及行数了,好像程序根本没有错误一样,不知道什么原因?
我的测试代码:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
int *a=new int;
TStringList *sl=new TStringList;
*a=1;
Caption=IntToStr(*a);
sl->Add("hello");
}
draculamx 2019-06-14
  • 打赏
  • 举报
回复
把你的出错代码,放到create里面,不要放到form的构造函数里,我当时搜索google的时候,记得在哪里看过,说是form的构造函数,可能会有“自动回收”??
draculamx 2019-06-14
  • 打赏
  • 举报
回复
是不是CodeGuard的设置问题啊,你恢复默认设置看看,CodeGuard设置我没动过
draculamx 2019-06-13
  • 打赏
  • 举报
回复
我传了4张图,怎么只有两张。。。
draculamx 2019-06-13
  • 打赏
  • 举报
回复
你CB是什么版本?我是10.2
新建一个工程,写一个内存泄漏的代码

运行程序

关闭程序

关闭窗体的时候,DEBUG中断发生,在左下角弹出了错误提示,其中标记的具体的代码行数,用鼠标双击箭头位置
直接跳转到源代码出问题的地方

ooolinux 2019-06-12
  • 打赏
  • 举报
回复
MFC整个架构的问题,改造和优化都没有意义,微软索性不管。
ooolinux 2019-06-12
  • 打赏
  • 举报
回复
引用 30 楼 draculamx 的回复:
[quote=引用 21 楼 ooolinux 的回复:] XE10也有Code Guard?我以为只有以前BCB 5.0有。
我是怎么发现的,知道不?我在google上搜索CB内存泄漏检测,搜到过,只不过都是CB5的,后来在安装组件的时候,挨个翻菜单,突然看见了。。 怎么你们都不知道的。。知道了早点告诉我也好啊。。 不过这东西还不错,我有几个指针释放方式错误,都给我定位到源代码了。。可以的。。。[/quote] 是怎么安装的?默认没安装的吗?
ooolinux 2019-06-12
  • 打赏
  • 举报
回复
本来会弹出一个窗口报告“CodeGuard detected error(s) in the program. A log file will be created”
再试又没有了,怎么回事呢?
draculamx 2019-06-12
  • 打赏
  • 举报
回复
引用 34 楼 许文君 的回复:
[quote=引用 32 楼 draculamx 的回复:]
[quote=引用 29 楼 许文君 的回复:]
你用vc不要用他的原生界面啊,用个简单点的界面库啊,再不然功能封成dll,C#写界面来调用


我给你讲哦。。在VC里面,就没有什么“简单的界面库”,再简单,也要写很多代码,那种吃屎的感觉,真的难受。。[/quote]
不,朋友,你的思路不够开阔啊,vc对话框去掉边框,内嵌webkit,界面就让前端去写好了,至于前端头疼的事能算事么。[/quote]

前端。。咱可不是大公司的,小公司里,就没有什么分工,一个软件,一个人。。。

其实微软的意图很明显,早就放弃了VC作为桌面快速开发的RAD工具,这个角色目前是C#,要不然VC在自带界面编程方面也不会几十年都没变化。最简单的,VC知道今天,VC2019依然没有“容器控件”,连个PANEL都没有,你感性。。。

就问你恶不恶心,难不难受。。。。
ooolinux 2019-06-12
  • 打赏
  • 举报
回复
我怎么找不到生成的log文件呢?
许文君 2019-06-12
  • 打赏
  • 举报
回复
引用 32 楼 draculamx 的回复:
[quote=引用 29 楼 许文君 的回复:] 你用vc不要用他的原生界面啊,用个简单点的界面库啊,再不然功能封成dll,C#写界面来调用
我给你讲哦。。在VC里面,就没有什么“简单的界面库”,再简单,也要写很多代码,那种吃屎的感觉,真的难受。。[/quote] 不,朋友,你的思路不够开阔啊,vc对话框去掉边框,内嵌webkit,界面就让前端去写好了,至于前端头疼的事能算事么。
xiaoxiangqing 2019-06-12
  • 打赏
  • 举报
回复
现在还在用cbc6
ooolinux 2019-06-12
  • 打赏
  • 举报
回复
引用 39 楼 draculamx 的回复:
不过我要提醒一下,在Debug中打开了CodeGuard以后,如果代码较多,会让你的程序运行的非常慢,这个没办法,你要检测就要付出代价。。。
打开以后要重新编译吧? 如果有内存泄漏,它是怎么提示的?
draculamx 2019-06-12
  • 打赏
  • 举报
回复
不过我要提醒一下,在Debug中打开了CodeGuard以后,如果代码较多,会让你的程序运行的非常慢,这个没办法,你要检测就要付出代价。。。
draculamx 2019-06-12
  • 打赏
  • 举报
回复
引用 36 楼 ooolinux 的回复:
[quote=引用 30 楼 draculamx 的回复:]
[quote=引用 21 楼 ooolinux 的回复:]
XE10也有Code Guard?我以为只有以前BCB 5.0有。

我是怎么发现的,知道不?我在google上搜索CB内存泄漏检测,搜到过,只不过都是CB5的,后来在安装组件的时候,挨个翻菜单,突然看见了。。

怎么你们都不知道的。。知道了早点告诉我也好啊。。

不过这东西还不错,我有几个指针释放方式错误,都给我定位到源代码了。。可以的。。。[/quote]

是怎么安装的?默认没安装的吗?[/quote]

IDE自带的




设置在这里



设置我没研究过,都是默认
draculamx 2019-06-12
  • 打赏
  • 举报
回复
引用 29 楼 许文君 的回复:
你用vc不要用他的原生界面啊,用个简单点的界面库啊,再不然功能封成dll,C#写界面来调用


我给你讲哦。。在VC里面,就没有什么“简单的界面库”,再简单,也要写很多代码,那种吃屎的感觉,真的难受。。
加载更多回复(29)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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