gpt4 book ai didi

C++ std::string 内部内存处理

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

<分区>

我对 std::string 如何处理它的复制(?)内存感到困惑。

当我尝试这样做时:

char* abc = new abc[512];
abc = "abcdef";
std::string tempstr(abc);
tempstr[0] = 'Y';
std::cout << tempstr.c_str() << std::endl;
std::cout << abc << std::endl;

我得到以下输出:

Ybcdef
abcdef

但如果我尝试释放由 new 分配的内存,则在末尾添加:

delete [] abc;

我收到内存错误 (_BLOCK_TYPE_IS_VALID)现在我的问题是,这怎么可能? String 似乎复制了 abc 的数据,使其保持原样,但由于某种原因,我无法删除它。

我问这个,因为我的代码中有以下情况:

char* somestring = new char[1024];
// something happens to somestring here
stack.push_back(somestring); // stack is a vector of strings

我想知道我应该在哪里释放由 somestring 分配的内存。

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