char *a=new char;a="abc";会泄露内存么?不会,因为你定义的是一维数组,不过你上面的表达错误char *a="new",char;a[]="abc";这样就不会报错了!你这里char* a=new,你用char又用了指针,很明显,你这是要定义指向字符串数组指针,正确表达式为:char *a="new",char;a[]="abc";如果第二个表达式我理解错误的话,你的意思就是说:将字符串"abc"给字符串变量a这个是没有错的,是正确的表达式,不会出现泄露内存!一维数组的下标可以省,但是二维数组的列下标不能省,如char a[][10]是对的,char a[][]是错的,只有二维数组才会出现泄露内存的情况,因为它不能省列标char *a=new char;a="abc";你上面并没有给固定的缓存区,而一维数组行标又可以省,所以你无论定义多少字符串,只要省行标,就不会出现泄露内存的情况!
char* a=new char;a="abc";会的,你原来分配给a的空间后,再次修改它的值 ,使原来的分配的内存失控,无法回收了。修改动态分配了内存的指针后,如果需要修改,记得先回收。char* a=new char;delete a;a="abc";