console/vc++6 char *p = new char[64];为什么看不内存泄露?

luwenguang 2003-09-24 10:34:14

int main(int argc, char ** argv)
{
char * p = new char[64];
if(p == 0)
{
return 1;
}

return 0;
}

在vc++6中,在调试窗口怎么看不到内存泄露?
...全文
154 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
luwenguang 2003-09-28
  • 打赏
  • 举报
回复
回复人: 1cs1ak1(菜得不能再菜) ( ) 信誉:100 2003-09-26 20:08:00 得分:0
"程序退出,内存由Windows回收了,所以你看不到"
是吗?
那是不是我们都不用释放内存,等着系统来释放啊。

>>
如果你不释放,并且程序运行时间长,new 的堆内存多,如果系统资源不足。
程序会死机。







luwenguang 2003-09-28
  • 打赏
  • 举报
回复
回复人: panzhaoping(潘赵平) ( ) 信誉:100 2003-09-26 12:56:00 得分:0
’程序自己最后会帮你DELETE掉的‘
不会的,你一定要用delete 因为这是在heap上开辟的
空间,程序无法自己释放。

>>
进程结束后,系统要回收系统资源。


luwenguang 2003-09-28
  • 打赏
  • 举报
回复
回复人: DaNiao(鸿雁) ( ) 信誉:104 2003-09-26 13:09:00 得分:0
是这样的MFC里有一个宏来打开内存泄露检查
但我想不起是什么了,你可以去MSDN查一下)
你自己写的控制台程序因为没有打开检查功能,所以VC就不检查了
你可以写个MFC的程序式一下,因为在MFC的一大堆头文件里有一个包含了这个宏
所以它就会为你检查了

>>

我觉得你说的最有道理了。
进程结束后,系统会回收 进程资源,这点没有怀疑。


panzhaoping 2003-09-26
  • 打赏
  • 举报
回复
’程序自己最后会帮你DELETE掉的‘
不会的,你一定要用delete 因为这是在heap上开辟的
空间,程序无法自己释放。
gernal_dn 2003-09-26
  • 打赏
  • 举报
回复
win32的进程有4G的内存空间,物理内存不够了,系统会自动建立虚拟内存,没有特别的例外化,系统在进程退出后总是能回收所有内存的;
但是,在进程退出前,如果老是这样,只分配不回收,长时间(特别是在服务器上)运行,进程会崩溃的。
yangchaobj 2003-09-26
  • 打赏
  • 举报
回复
Windows有内存保护机制,Windows回自己释放进程的所有资源。

但是否完全释放掉new出的内存,各个windows版本有什么区别,都是未知数。
因此,还是自己留意。

在VC中,侦测内存泄漏需要打开一个选项或激活一个宏定义。
1cs1ak1 2003-09-26
  • 打赏
  • 举报
回复



"程序退出,内存由Windows回收了,所以你看不到"
是吗?
那是不是我们都不用释放内存,等着系统来释放啊。





Jinhao 2003-09-26
  • 打赏
  • 举报
回复
如果程序不退出,系统肯定不会回收,这样,如果无休止的出现内存泄露,你的内存就会一点一点地被吞掉的
Jinhao 2003-09-26
  • 打赏
  • 举报
回复
如果程序不退出,系统肯定不会回收,这样,你的内存就会一点一点的没吞掉
xzygod 2003-09-26
  • 打赏
  • 举报
回复
to Jinhao(辣子鸡丁)

进程退出,系统会回收内存,要是不退出呢?那些地址空间用完就没了
DaNiao 2003-09-26
  • 打赏
  • 举报
回复
是这样的MFC里有一个宏来打开内存泄露检查
(但我想不起是什么了,你可以去MSDN查一下)
你自己写的控制台程序因为没有打开检查功能,所以VC就不检查了
你可以写个MFC的程序式一下,因为在MFC的一大堆头文件里有一个包含了这个宏
所以它就会为你检查了
Jinhao 2003-09-26
  • 打赏
  • 举报
回复
程序退出,内存由Windows回收了,所以你看不到了
void fun()
{
char * p = new char[64];
}

int main(int argc, char ** argv)
{
fun();
getchar();
return 0;
}
langzi8818 2003-09-25
  • 打赏
  • 举报
回复
程序自己最后会帮你DELETE掉的
luwenguang 2003-09-25
  • 打赏
  • 举报
回复
UP
luwenguang 2003-09-24
  • 打赏
  • 举报
回复
我知道要delete。
tonybaobao 2003-09-24
  • 打赏
  • 举报
回复
bcb发现了又怎么样呢?你只要知道new完之后应该delete就好了。
luwenguang 2003-09-24
  • 打赏
  • 举报
回复
can bcb IDE ?
xzygod 2003-09-24
  • 打赏
  • 举报
回复
vc可不保证一定能发现内存泄漏

64,642

社区成员

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

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