如题
解决方案 »
- directDraw创建了一个24位的离屏表面,靠上数据,怎么绘制到一个32位的主表面?
- 菜鸟求助:极其简单的键盘钩子问题!!
- 如何用VC6.0通过ODBC访问SQL Server 2000?
- VC6。0 中调用SQLConfigDataSource创建数据源需要包含什么头文件?急!!!
- 为什么我的 CryptEncrypt 不能对字符串加密?
- 怎么样阻止一个EXE文件的运行,最好有例子
- 两个CTime类型的比较,应该不难
- 如何使连续发送成功?
- 有谁知道如何获取物理桢呢?且能在EDIT里显示出来,或者得到某个TP包也行的!
- 无法获取窗口初始化句柄 MFC
- 我还在用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