我有以下代码:
char* value = "abcdefg";
char* secondValue = value;
第二个值将获得值的地址吗?如果删除“值”,secondValue将不可用,对吗?
所以我应该做:
char* value = "abcdefg";
secondValue = new char[strlen(value)];
strcpy(secondValue, value);
所以如果我删除“值”没问题。
最后要解除分配secondValue,我应该做:
delete[] secondValue;
我对吗?
最佳答案
您写的内容有两个问题:
char *value = "abcdefg";
,因为它没有在堆上分配。要分配堆内存,请使用
new
(在C++中)或malloc
(在C中)。 就您而言,您应该完成以下操作:
secondValue = new char[strlen(value)+1];
除此之外,你是正确的
关于c++ - 在C++中处理字符(无std::string),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4234505/