如何解决访问冲突-取消引用的ostringstream
我有一个ostringstream
对象,我试图在其中插入一些字符,但是ostringstream
对象位于名为shared_ptr
的{{1}}中。当我尝试解除对pOut
的引用时,总是会遇到访问冲突错误。
这是我要做的事情的简化版本:
pOut
在我看来,这应该可以工作,因为下面显示的程序可以编译并且可以正常运行:
#include <iostream>
#include <sstream>
int main()
{
std::shared_ptr<std::ostringstream> pOut;
*pOut << "Hello";
std::cout << pOut->str();
}
为什么取消对对象的引用会引发访问冲突错误,我该如何解决此问题?以下是我遇到的错误。
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream out;
out << "Hello";
std::cout << out.str();
}
解决方法
您创建了指针对象,但最初将其设置为nullptr
或NULL
或0
。因此访问该内存肯定会导致分段错误或访问冲突。您需要为其赋予价值。所以代替这个:
std::shared_ptr<std::ostringstream> pOut;
使用此:
std::shared_ptr<std::ostringstream> pOut = std::make_shared<std::ostringstream>();
这应该可以解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。