1

私はここで愚かなことをしていると確信していますが、それが何であるかを完全に理解することはできません。このコードを実行しようとすると:

#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 << scout << s2。s2を「hi」に初期化した場合はエラーなしで実行されますが、それ以外の場合は実行されません。これは奇妙なgccコンパイルの問題ですか?

4

2 に答える 2

2

したがって、答えはXcodeのバグであることが判明しました。同様の問題とその解決策を 次に示します。

于 2010-04-17T23:28:10.710 に答える
1

私のために働きます。

しかし、私はこれを行ったことがありません:

istringstream input(s, istringstream::in); 

試す

istringstream input(s); 
于 2010-04-13T20:55:36.917 に答える