char* a=new char;a="abc";会泄露内存么?

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:07:34

char* a=new char;a="abc";
会的,你原来分配给a的空间后,再次修改它的值 ,使原来的分配的内存失控,无法回收了。
修改动态分配了内存的指针后,如果需要修改,记得先回收。
char* a=new char;delete a;a="abc";

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";你上面并没有给固定的缓存区,而一维数组行标又可以省,所以你无论定义多少字符串,只要省行标,就不会出现泄露内存的情况!

会!