我正在尝试使用 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;
}
在每个单词之前,我都会收到此错误。从评论看来,它似乎是 OSX/XCode 特定的错误。有什么提示吗?
更新: 错误仅在调试模式下打印。如果我在发布模式下构建此代码,一切都很好。
更新 2: 可以在此处找到有关该问题的更多信息。
解决方案:
放
_GLIBCXX_FULLY_DYNAMIC_STRING=1
在目标信息构建选项卡中的预处理器宏中。
系统信息:
OSX 10.6.2 | XCode 3.2 | g++ 4.2 | i386 的调试配置