社区
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中,在调试窗口怎么看不到内存泄露?
...全文
193
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写文章
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可不保证一定能发现内存泄漏
详解
char
* p及
char
p[]
char
* p():声明一个函数返回值为一个指向字符(串)的指针。 #include <iostream> using namespace std;
char
* p() { static
char
str[100] = { "Hello World!!" }; return str; } void main() {
char
* str = nullptr; str =...
char
* 与
char
[]区别总结
1.先上结论
c++
代码里头经常见到
char
* 与
char
[]的写法,这两种写法都可以表示一个字符串。比如: void
char
code() {
char
* a = "c1";
char
b[] = "c2"; printf("a=%s, b=%s", a, b); } 上面这段代码,最后输出的结果为 a=c1, b=c2 所以这两种方式都可以表示字符串,那么区别到底是什么?我们先说结论,后面再来分析:
char
* 这种方式表示常量指针,
char
[] 这种表示指针常量! 2
char
*p=
new
char
a只是个指针而以,它可以指向一个字符,也可以指向一个字符串。在第5行的时候,a指向的是一个一字节的
char
,但是在第6行的时候,a已经指向"abcde"了。所以输出的时候,就是"abcde"了。所以这个例子是一个典行的资源泄露的例子。因为
new
char
了,确没有使用,并由于a在之后已经不指向这个字符的空间,使之以后都没有机会再被释放掉了,所以这1bit空间就资源泄露了。
C/
C++
的
char
*到底是个什么东西——
char
*的内存占用与用法
C/
C++
的
char
*到底是个什么东西——
char
*的内存占用与用法为什么要写这篇前置知识——程序运行时的内存使用情况
char
*是什么
char
*的用法 首先声明,写这个之前看了一些博客,这篇对我的帮助最大,感谢这位博主:https://blog.csdn.net/yahohi/article/details/7427724 为什么要写这篇 最近在写
C++
作业的时候要写一个Person类,在名字输入...
指针——
char
p[] 和
char
*p
目录 1.
char
p[]和
char
*p ☆☆☆☆ 2. 3. 函数里的指针** 4.数组作为函数参数传递 5.两数交换的那些坑 6.函数参数为指针应小心 7. 数组指针 ** 8. 二级指针 9.*p++、 (*p)++、 *++p、 ++*p c语言-数组、指针面试题 - CYYZ古月 - 博客园☆☆☆☆☆☆
char
*p="abc" 与
char
p[]="abc" 的区别_安徽祝子的博客-CSDN博客
C++
常量 | 菜鸟教程 1.c...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章