私はここで愚かなことをしていると確信していますが、それが何であるかを完全に理解することはできません。このコードを実行しようとすると:
#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を割り当てたということですが、文字列はヒープ上で独自のコンテンツを管理していると思いました。ここでの助けをいただければ幸いです。
ありがとう、
らせん状
編集:メインの最後の行を修正しましcout << s
たcout << s2
。s2を「hi」に初期化した場合はエラーなしで実行されますが、それ以外の場合は実行されません。これは奇妙なgccコンパイルの問題ですか?