我认为这char* = "string"
是相同的char* = new char[6]
.我相信这些字符串是在堆而不是堆栈上创建的.因此,当我使用它们或者它们被自己摧毁时,我是需要销毁它们还是释放它们的记忆?
不需要.当您使用malloc
函数(在C中)或new
运算符(在C++中)自己手动分配内存时,您只需手动释放字符串.如果不使用malloc
或new
,那么char*
将在堆栈上创建或作为编译时常量.
不,当你说:
const char* c = "Hello World!";
您将c分配给"预先存在的"字符串常量,该常量与以下内容不同:
char* c = new char[6];
只有在后一种情况下才在堆上分配内存.所以当你完成后你会打电话给删除.