我确定我在这里只是做了一些蠢事,但我无法弄清楚它是什么。当我尝试运行此代码时:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, char *argv[])
{
string s("hello");
istringstream input(s, istringstream::in);
string s2;
input >> s2;
cout << s;
}
我收到此错误:
malloc: *** error for object 0x100016200: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
我唯一能想到的是我在堆栈上分配了s2,但我认为字符串在堆上管理自己的内容。这里的任何帮助将不胜感激。
谢谢,
helixed
编辑:修正了main的最后一行,其中cout << s
应该是cout << s2
。如果我将s2初始化为“hi”,它运行时没有错误,但不是。这只是一个奇怪的gcc编译问题吗?
答案 0 :(得分:2)
所以答案结果证明是Xcode中的一个错误。 Here's类似的问题及其解决方案。
答案 1 :(得分:1)
适合我。
但我从未这样做过:
istringstream input(s, istringstream::in);
尝试
istringstream input(s);