char *pc = NULL; pc = new char[0]; pc[0] = '1'; 相信初学者看见上面这段代码,都会觉得奇怪,new char[n]中的n指定给指针变量分配多少内存空间,而n=0时代表什么呢? 其实上面的程序编译.运行都是正确的.因为编译器识别到指定大小为0时,会自动为其分配1BYTE的内存空间. 尝试过的小伙伴会发现,给p[1]赋值也不会报错,原因留到后面讲*1. 但是,此时若想用delete [] p; 去释放内存空间就会报错,程序强制中断,因为编译器并没有真正意…