C++使用getline()打印:释放的指针未在XCode中分配

dan*_*dan 10 c++ malloc macos xcode getline

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

malloc:*对象0x10000a720的错误:未释放指针被释放*在malloc_error_break中设置断点以进行调试

这是产生此错误的代码:

//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;
}
Run Code Online (Sandbox Code Playgroud)

在每个单词之前我都会收到此错误.从评论中看起来似乎是OSX/XCode特定的错误.有什么提示吗?

更新: 错误仅在调试模式下打印.如果我在发布模式下构建此代码,一切都很好.

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

解:

_GLIBCXX_FULLY_DYNAMIC_STRING = 1

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

系统信息:

OSX 10.6.2 | XCode 3.2 | g ++ 4.2 | 调试i386的配置

Mic*_*urr 10

至少有一个人报告了关于Apple的g ++ 4.2.1的问题,看起来可能与您的标准库的不正确配置有关_GLIBCXX_FULLY_DYNAMIC_STRING(不是我理解我在这里输入的任何内容).

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