微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问冲突-取消引用的ostringstream

如何解决访问冲突-取消引用的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(); }

解决方法

您创建了指针对象,但最初将其设置为nullptrNULL0。因此访问该内存肯定会导致分段错误或访问冲突。您需要为其赋予价值。所以代替这个:

std::shared_ptr<std::ostringstream> pOut;

使用此:

std::shared_ptr<std::ostringstream> pOut = std::make_shared<std::ostringstream>();

这应该可以解决您的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。