是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?

问题描述 投票:0回答:1
const char* s = std::string("text").c_str();
std::cout << s << std::endl; //This will print nothing because the data
                             //isn't available any longer

std::string::c_str()返回指向其存储数据的指针。考虑到std::string("text")在我使用它的时候才可用(例如,当我用它来初始化另一个实例时),所以最后调用析构函数来删除数据,这反过来使s指向任何东西。

现在我的问题是,是否存在保持原始数据存活的本机(独立于库)方法。或者它是否可能使用像共享智能指针这样的东西,它知道其他东西是否指向std::string的数据,所以它还没有被删除。

c++ memory
1个回答
1
投票

不能使字符串在内部使用引用计数指针。如果您希望使用指向其数据的指针,则必须确保该字符串存活。唯一的选择是将数据复制/移动到另一个字符串对象中。

© www.soinside.com 2019 - 2024. All rights reserved.