在C++中处理字符(没有std :: string)

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)

我对吗?

ada*_*amk 6

你写的内容有两个问题:

  1. 您无法删除char *value = "abcdefg";,因为它未在堆上分配.要分配您使用的堆内存new(在C++中)或malloc(在C中).

  2. 为字符串分配内存时,总是需要一个额外的字节用于空终止.

在你的情况下,你应该做到:

secondValue = new char[strlen(value)+1];
Run Code Online (Sandbox Code Playgroud)

除此之外,你是对的