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