char* p = new char [20] delete p 出现问题!

来源:互联网 发布:六一淘宝海报图片 编辑:程序博客网 时间:2024/05/22 17:39

char *p = new char [20];

p = "simple";

delete p;

运行出错,原因如下:

p   =   "simple ";  
  这句本身是没有问题的,p指向在全局字符串常量区的"simple" ,  
  p原来指向的new分配的内存的地址就丢失了。  
   
  然后delete   p;就是去释放存放"hi   "字符串的程序的静态数据区的内存,而不是new分配的内存,当然出错!