gpt4 book ai didi

c++ - 为什么通过指针调用 std::stringstream good() 会导致崩溃?

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:50 24 4
gpt4 key购买 nike

我在使用 stringstream 对象时遇到问题。我的类(class)有一个输入流作为成员。我正在检查 obj->istream,然后检查 obj->istream->good()。

流存在但是对 good() 的调用崩溃了。我在 Visual Studio 2005 中。有什么线索吗?

如何重置 istream?


if (soap->is) {

if (soap->is->good())

return soap->is->read(s, (std::streamsize)n).gcount();

return 0;
}

该代码来自gsoap框架


std::istringstream in_stream;
in_stream.str("a buffer");
soap->is = &in_stream;

in_stream 超出范围,它属于本地堆栈,但是 ->is->good()当 in_stream 不再存在时在该函数外部调用。

最佳答案

您已经回答了最后两行中的问题。您有一个指向超出范围的对象的悬空指针,使用它会导致未定义的行为(很可能是崩溃)。您需要确保该对象在需要时一直存在,方法是将其放置在更持久的作用域中或使用 new 分配它,并确保在不再需要时将其删除。

关于c++ - 为什么通过指针调用 std::stringstream good() 会导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com