社区
C++ 语言
帖子详情
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中,在调试窗口怎么看不到内存泄露?
...全文
166
18
打赏
收藏
console/vc++6 char *p = new char[64];为什么看不内存泄露?
int main(int argc, char ** argv) { char * p = new char[64]; if(p == 0) { return 1; } return 0; } 在vc++6中,在调试窗口怎么看不到内存泄露?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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可不保证一定能发现内存泄漏
V
C++
6.0培训教程
V
C++
6.0培训教程
cjson使用例子,在vc6.0编译通过
cjson使用例子,在vc6.0编译通过
C++
面试题2
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量?
c语言笔试题总结
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量?
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量?
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章