gpt4 book ai didi

C++ 使用 getline() 打印 : pointer being freed was not allocated in XCode

转载 作者:可可西里 更新时间:2023-11-01 16:03:33 26 4
gpt4 key购买 nike

我正在尝试使用 std:getline() 但出现了一个奇怪的运行时错误:

malloc: * error for object 0x10000a720: pointer being freed was not allocated * set a breakpoint in malloc_error_break to debug

这是产生此错误的代码:

//main.cpp
#include <iostream>
#include <sstream>

int main (int argc, char * const argv[])
{
std::istringstream my_str("demo string with spaces");
std::string word;

while (std::getline(my_str, word, ' ')) {
std::cout << word << std::endl;
}
return 0;
}

在每个单词之前我都会收到这个错误。从评论来看,它似乎是一个 OSX/XCode 特定的错误。有什么提示吗?

更新:该错误仅在 Debug模式下打印。如果我在 Release模式下构建此代码,一切都很好。

更新 2:可以找到有关该问题的更多信息 here .

解决方案:

设置

_GLIBCXX_FULLY_DYNAMIC_STRING=1

在目标信息构建选项卡中的预处理器宏中。

系统信息:

OSX 10.6.2 | XCode 3.2 | g++ 4.2 | debug config for i386

最佳答案

至少有一个人报告了 Apple 上 g++ 4.2.1 的问题,这些问题似乎与您的问题有关,这与您使用 _GLIBCXX_FULLY_DYNAMIC_STRING 定义的标准库配置不当有关(不是我理解的我在这里输入的任何内容)。

您可能会从包含此消息的新闻组线程中获得一些线索:

关于C++ 使用 getline() 打印 : pointer being freed was not allocated in XCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234557/

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