const char * 是如何动态释放的

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:20:22
const char * temp="fasdfsd";
delete temp;
//编译是报错
none of the 2 overloads can convert parameter 1 from type 'const char *'
该如何动态删除const char *;
两位高手的意思就是说不能动态释放const char * 了吗?

你的代码里面的temp只是一个指向那个字符串的指针。但是你定义的那个字符串是储存在栈内存中的。这个字符串会随着你的变量所定义的函数的退出而自动释放。但是如果这个是个全局变量的话就要到程序退出才能自动释放。不过说白了也就是,你这样定义的字符串是不需要动态释放的。
不过好像我这段代码可以在GCC上通过:
const char *pch = "aaaa";
char *pch2 = (char *)((void *)pch);
delete [] pch2;

栈内存会随着程序的执行自动释放

不要尝试释放一个string literal。。。。。。。。