我有以下代码:

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/

    10-11 06:45