std:getline()を使用しようとしていますが、奇妙なランタイムエラーが発生します:
malloc:*オブジェクト0x10000a720のエラー:解放されるポインターが割り当てられませんでした*デバッグするためにmalloc_error_breakにブレークポイントを設定します
これは、このエラーを生成するコードです。
//main.cpp
#include <iostream>
#include <sstream>
int main (int argc, char * const argv[])
{
std::istringstream my_str("demo string with spaces");
std::string word;
while (std::getline(my_str, word, ' ')) {
std::cout << word << std::endl;
}
return 0;
}
各単語の前に、このエラーが発生します。コメントから、OSX/XCode固有のエラーのようです。そのためのヒントはありますか?
更新: エラーはデバッグモードでのみ出力されます。このコードをリリースモードでビルドすると、すべて問題ありません。
更新2: その問題の詳細については、こちらをご覧ください。
解決:
セットする
_GLIBCXX_FULLY_DYNAMIC_STRING = 1
ターゲット情報ビルドタブのプリプロセッサマクロで。
システム情報:
OSX 10.6.2 | XCode 3.2 | g ++ 4.2 | i386のデバッグ設定