如题

解决方案 »

  1.   

    C++中很简单
    char *c = new char[10];
    使用了new之后,如果不用delete进行清除就会引起内存泄漏
    在使用完c后应该这样:
    delete c;
      

  2.   

    你用一个CBitmap试试!
    CBitmap *b;
    b=new CBitmap;
    再加点图像!
    用一个按钮实现!每点一次就NEW一次!你试试!
      

  3.   

    new后没有delete
    malloc后没有free
    还有资源泄漏
      

  4.   

    但是你的程序结束,系统内存并没有多少变化呀______________________
    任何程序一旦结束,系统会释放它所有的内存.所以,无论你是否释放,最后都不会产生泄漏. 但是如果你的程序运行时间很长, 而且不断的分配而不释放内存, 最终系统会在你的程序结束之前DOWN掉.
      

  5.   

    /*-A-*/
    char *p = new char[1024];
    p += 10;
    delete p;/*-B-*/
    CDC* pDC = GetDC();
    //没有ReleaseDC();
    如果想系统MEM明显变化就用循环试试吧.
      

  6.   

    我写了一个mfc的对话框程序,加一个按钮
    加入如下代码,
    char *c = new char[10000000];
    每点击一下,内存加大10mb但是程序结束后,内存又恢复了。
      

  7.   

    一般情况下,编译软件对用户申请的内存块并不提供过多的保护,请看下面的例子: void foo()
    {
    char *p = (char*)malloc(32);
    } 函数foo()被调用之后,它里面申请的内存块随之“漂浮”了。程序结束之后,编译器的调试信息窗口只会告诉你有一个内存泄漏发生,并打出它的首地址。
    这些信息不是很直观,实用价值也不大,因为我们需要手工去查找这块内存是由谁分配的,如果你的程序比较大的话,这简直就是一种折磨:)
    我们再来看看下面这段程序会造成什么后果: char *p = (char*)malloc(32); memset(p, 0, 100); 哦!你猜对了,它会让你的软件崩溃。而且每次崩溃的时间和地点都可能不同(因为每次运行软件时,内存 p 后面的内容都可能不同)。这时编译器的调试窗口中不会给出任何有价值的提示信息。
      

  8.   

    char *pChar = new char[100];delete pChar; //引起内存泄漏,应该是delete [] pChar;
      

  9.   


    任何程序一旦结束,系统会释放它所有的内存.所以,无论你是否释放,最后都不会产生泄漏. 但是如果你的程序运行时间很长, 而且不断的分配而不释放内存, 最终系统会在你的程序结束之前DOWN掉.
      

  10.   

    一个最普通的例子:
    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已经被释放
      

  11.   

    看看
    http://www.csdn.net/expert/topic/1002/1002256.xml?temp=.103039