如题
解决方案 »
- 请问 Resource.h 里的各个 define 的ID号码可以随意更改么?
- 散分兼总结一下DLL声明的一些问题
- 我很笨、傻,我想问:什么是“系统程序”
- 如何从一个treectrl中拖拽一个节点到toolbar中?
- 紧急求助:答出一题 给 100分! 拜托! 明天下午之前要!
- 100分,大家都来谈谈:如何在msdn上找到需要的信息
- 我的IE上地址栏下面多了个工具条,用了N种工具都去不掉,怎么去掉啊?
- 如何保存CBitmap对象到磁盘文件*.bmp
- C++类的问题
- 请问,HBITMAP 和 BITMAP 这两个结构有什么区别?
- 我还在用VC1.0,大家怎么看我?
- 为什么 在打印预浏内 看到的是虚线, 而打印出来,却是实线?
char *c = new char[10];
使用了new之后,如果不用delete进行清除就会引起内存泄漏
在使用完c后应该这样:
delete c;
CBitmap *b;
b=new CBitmap;
再加点图像!
用一个按钮实现!每点一次就NEW一次!你试试!
malloc后没有free
还有资源泄漏
任何程序一旦结束,系统会释放它所有的内存.所以,无论你是否释放,最后都不会产生泄漏. 但是如果你的程序运行时间很长, 而且不断的分配而不释放内存, 最终系统会在你的程序结束之前DOWN掉.
char *p = new char[1024];
p += 10;
delete p;/*-B-*/
CDC* pDC = GetDC();
//没有ReleaseDC();
如果想系统MEM明显变化就用循环试试吧.
加入如下代码,
char *c = new char[10000000];
每点击一下,内存加大10mb但是程序结束后,内存又恢复了。
{
char *p = (char*)malloc(32);
} 函数foo()被调用之后,它里面申请的内存块随之“漂浮”了。程序结束之后,编译器的调试信息窗口只会告诉你有一个内存泄漏发生,并打出它的首地址。
这些信息不是很直观,实用价值也不大,因为我们需要手工去查找这块内存是由谁分配的,如果你的程序比较大的话,这简直就是一种折磨:)
我们再来看看下面这段程序会造成什么后果: char *p = (char*)malloc(32); memset(p, 0, 100); 哦!你猜对了,它会让你的软件崩溃。而且每次崩溃的时间和地点都可能不同(因为每次运行软件时,内存 p 后面的内容都可能不同)。这时编译器的调试窗口中不会给出任何有价值的提示信息。
任何程序一旦结束,系统会释放它所有的内存.所以,无论你是否释放,最后都不会产生泄漏. 但是如果你的程序运行时间很长, 而且不断的分配而不释放内存, 最终系统会在你的程序结束之前DOWN掉.
class string {
public:
string(const char *value);
~string(); ... private:
char *data;
};string a("hello"); {
string b("world"); ... b = a;
}
string c = a;
c.data 的值不能确定,a已经被释放
http://www.csdn.net/expert/topic/1002/1002256.xml?temp=.103039