Я уверен, что я просто делаю что-то глупое, но я не могу понять, что это такое. Когда я пытаюсь запустить этот код:
#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
EDIT: исправлена последняя строка main, где cout << s
должно было быть cout << s2
. Он запускается без ошибок, если я инициализировал s2 как «привет», но не иначе. Это просто странная проблема компиляции gcc?