首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问冲突-取消引用的ostringstream

访问冲突-取消引用的ostringstream
EN

Stack Overflow用户
提问于 2020-09-26 05:51:02
回答 1查看 75关注 0票数 0

我有一个ostringstream对象,我正试图在其中插入一些字符,但是这个ostringstream对象在一个名为pOutshared_ptr中。当我尝试取消对pOut的引用时,我总是得到一个访问冲突错误。

这是我正在尝试做的事情的一个简化版本:

代码语言:javascript
复制
#include <iostream>
#include <sstream>

int main()
{
  std::shared_ptr<std::ostringstream> pOut;
  *pOut << "Hello";
  std::cout << pOut->str();
}

在我看来,这应该是可行的,因为下面看到的程序编译和运行没有任何问题:

代码语言:javascript
复制
#include <iostream>
#include <sstream>

int main()
{
  std::ostringstream out;
  out << "Hello";
  std::cout << out.str();
}

为什么取消引用对象会引发访问冲突错误,我该如何解决这个问题?下面是我得到的错误。

Exception thrown at 0x00A22112 in MemoryIssueTest.exe: 0xC0000005: Access violation reading location 0x00000000.

EN

回答 1

Stack Overflow用户

发布于 2020-09-26 23:12:08

您创建了pointer对象,但它最初设置为nullptrNULL0。因此,访问该内存肯定会导致分段错误或访问冲突。你需要给它一个值。因此,不是这样:

代码语言:javascript
复制
std::shared_ptr<std::ostringstream> pOut;

使用以下命令:

代码语言:javascript
复制
std::shared_ptr<std::ostringstream> pOut = std::make_shared<std::ostringstream>();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64071701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档