oka*_*ami 1 c++ arrays char dealloc
我有这个代码:
char* value = "abcdefg";
char* secondValue = value;
Run Code Online (Sandbox Code Playgroud)
第二个值会得到值的值吗?如果我删除"value",我的第二个值将无法使用吗?
所以我应该这样做:
char* value = "abcdefg";
secondValue = new char[strlen(value)];
strcpy(secondValue, value);
Run Code Online (Sandbox Code Playgroud)
所以如果我删除"价值"没问题.
最后要解除我应该做的第二个值:
delete[] secondValue;
Run Code Online (Sandbox Code Playgroud)
我对吗?
你写的内容有两个问题:
您无法删除char *value = "abcdefg";,因为它未在堆上分配.要分配您使用的堆内存new(在C++中)或malloc(在C中).
为字符串分配内存时,总是需要一个额外的字节用于空终止.
在你的情况下,你应该做到:
secondValue = new char[strlen(value)+1];
Run Code Online (Sandbox Code Playgroud)
除此之外,你是对的