比如:
CArray <CPerson*,CPerson*> m_Person;
CPerson* m_Person1=new CPerson();
m_Person1->m_Name="aaaa";
m_Person1->m_Phone="123456";
m_Person.add(m_Person1);
以上通过new开辟的内存空间,退出程序时必须释放,delete.char* m_str;
m_str也需要释放吗。函数中定义的局部变量,等等。
谁能让我弄明白,什么时候定义的变量,必须自己释放,什么样的变量,系统自己释放。

解决方案 »

  1.   

    一般你用new分配的内存需要用delete删除,用malloc分配的内存需要用free删除,讲究谁分配谁释放。
      

  2.   

    对于new/malloc申请的空间,需要自己释放,delete/free
      

  3.   

    反正你用了new了就要用delete,你没有用new 就不用delete,它们是成对的,并不一定定义了一个指针就要释放。
    你调用别人的方法得到一个指针变量,那你用完以后,也得负责释放,如果你编库给别人用,传出一个指针变量,你就只管new ,不用delete.
      

  4.   

    那如何定义的变量,或在什么情况下定义的变量需要自己释放呢
    比如:
    void aa()
    {
        char* g_str;}
    以上定义的变量g_str需要自己释放吗,delete g_str
      

  5.   

    你没有用new 就不用delete
    不用delete
      

  6.   

    基本的c++概念
    new对应delete
    malloc对应free
      

  7.   

    c++概念
    如果用new分配堆内存就有责任收回它,否则将会造成内存泄漏。
    函数中定义的局部变量不需要释放。
    在C++中只有new需要delete释放。