10

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のデバッグ設定

4

1 に答える 1

10

少なくとも1人の人がAppleのg++4.2.1の問題を報告しました。これは、定義を含む標準ライブラリの不適切な構成に関係している可能性があり_GLIBCXX_FULLY_DYNAMIC_STRINGます(ここで入力している内容を理解しているわけではありません)。

このメッセージを含むニュースグループスレッドから少し手がかりを得るかもしれません:

于 2010-02-10T06:47:39.947 に答える