Это поток в C ++ - PullRequest
       24

Это поток в C ++

1 голос
/ 14 апреля 2010

Я уверен, что я просто делаю что-то глупое, но я не могу понять, что это такое. Когда я пытаюсь запустить этот код:

#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?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2010

Таким образом, ответ оказался ошибкой в ​​Xcode. Вот аналогичная проблема и ее решение.

1 голос
/ 14 апреля 2010

У меня работает.

Но я никогда не делал этого:

istringstream input(s, istringstream::in); 

Попробуйте

istringstream input(s); 
...