LPSTR buffer = new char[20];
memset(buffer, 0, 20);
buffer = "hello!";
delete buffer;当我去掉末尾的delete语句就可以正常运行,为什么?

解决方案 »

  1.   

    LPSTR buffer = new char[20];
    memset(buffer, 0, 20);
    strcpy(buffer,"hello!");if(buffer)
      delete buffer;
      

  2.   

    LPSTR buffer = new char[20];
    memset(buffer, 0, 20);
    strcpy(buffer,"hello");
    MessageBox(buffer);
    delete buffer;不要直接 用=,要strcpy,copy到缓冲区
      

  3.   

    buffer = "hello!";
    delete buffer;此时buffer指向的是一段局部内存,里面就是hello!,而不再指向new的内在,只要不是动态分配的内存都不能使用delete去释放它,退出程序作用域后自然释放。另外注意:你上面的程序造成了内存泄漏!一但一指针指向了在堆中分配的内存,在翻译内存前千万不要另指向别处,否则内存泄漏。
      

  4.   

    直接用=号并没有错,如:
    LPSTR buffer;
    buffer = "hello!";
      

  5.   

    delete [] buffer; 看看