delete by yourself in c++msg pack = new  msg; //compile error 

解决方案 »

  1.   

    new一个变量,必须delete!
    1.
    msg Pack pack;

    2.
    msg pack = new Pack;
    对于1,不需delete;
    2则要delete:
    if (pack != NULL)
      delete pack;
      

  2.   

    可有两种方法定义:
    msg Pack pack;

    msg pack = new Pack;
    然后:
    if (pack != NULL)
    {
      delete pack;
      pack = NULL;
    }
      

  3.   

    但为什么我一delete 掉就会出错呢?
    加上delete Pack;  会出错
      

  4.   

    用这个再试试,可能是没有分配就释放,所以造成无法“read 00eead:000e2d”之类的错误!
    if (pack != NULL)
    {
      delete pack;
      pack = NULL;
      

  5.   

    拜托,不要这样,msg pack = new Pack; 内存泄漏;局部变量pack也用不着delete。
    new 的返回一定是赋给一个指针变量的,你这样写,等于在堆上创建一个对象,然后将这个对象赋给一个栈上的局部变量,然后对堆上的那个对象的引用就丢了。每执行一次这段代码,就有一小块内存泄漏。
      

  6.   

    第二种定义错误,第一种必须在用完后delete.
      

  7.   

    我觉得应该在SocketList释放时候,将其中的各个数据delete调
      

  8.   

    to jordanchow(Mr.J) 
    那怎么样做才会防止内存泄漏呢??
      

  9.   

    自己new的一定要自己动手delete是肯定的,但第二种是不对的。我觉得你delete的地方不对,在析构函数中或在其余的退出点delete
      

  10.   

    to gainlsy1(gainlsy1) 
    我的目的不是想删掉列表中的数据,是想收回我手工分配的内存
    我觉得每执行一次OnReceive都会分配一小点内存,如果时间长了,后果不知道会怎么样?请会一下各位怎么样解决??大家都发表一点宝贵的意见
      

  11.   

    to blue_flying(灵感律动) 
    那我这段程序应该在那delete 呢?
    你所说的析构函数是哪个,请指教?