是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?相关的知识,希望对你有一定的参考价值。
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
的数据,所以它还没有被删除。
答案
不能使字符串在内部使用引用计数指针。如果您希望使用指向其数据的指针,则必须确保该字符串存活。唯一的选择是将数据复制/移动到另一个字符串对象中。
以上是关于是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不将图像保存在本地的情况下将捕获的图像(Surface View)传递给另一个片段?