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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...