gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:01 27 4
gpt4 key购买 nike

我有这个代码:

char* value = "abcdefg";

char* secondValue = value;

第二个值会得到值的地址好吗?如果我删除“value”,secondValue 将不可用,对吗?

所以我应该这样做:

char* value = "abcdefg";
secondValue = new char[strlen(value)];
strcpy(secondValue, value);

所以如果我删除“值”没问题。

最后要释放我应该做的 secondValue:

delete[] secondValue;

我说得对吗?

最佳答案

你写的有两个问题:

  1. 您不能删除 char *value = "abcdefg";,因为它没有分配在堆上。要分配堆内存,您可以使用 new(在 C++ 中)或 malloc(在 C 中)。

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

在你的情况下,你应该这样做:

secondValue = new char[strlen(value)+1];

除此之外,你是对的

关于c++ - 在 C++ 中处理字符(没有 std::string),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4234505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com