2009-07-29 4 views
0

私は共有オブジェクトを読み込もうとして最初の行がdlopenの呼び出しであるテストに使用しているC++コードがあります。この行を打つ時に、私は次のエラーを取得する:dlopenでエラーが発生しました:St9bad_alloc

Terminate called after throwing an instance of std::bad_alloc: 
    what() : St9bad_alloc 

私はメモリを引き上げてきました(無料-mが今の私のexeファイルをGDBにロードされたとき、私は無料〜120メガバイトを持っていることを報告して)、私はまだ同じを取得しますメッセージ。

他に何が原因でこれが起こる可能性があるのですか?&私はそれを解決するために何ができるのですか?

答えて

0

おそらくすべての依存関係が見つからない可能性があります。

ディレクトリを、アプリケーションの存在するディレクトリに変更します。
次に、ロードしようとしている共有ライブラリのnmを使用します(コードで使用したのと同じパス)。
これは不足している依存関係を表示します。

2

私の推測では、dlopenはそれとは関係ありません。 dlopen()はC言語の関数であり、例外をスローすることはできません。実際にスローできるのは、共有オブジェクトの初期化関数です(静的オブジェクトに割り当てる式など)。たとえば、あなたがロードしている共有オブジェクトでこれを書いた場合、それはbad_allocでクラッシュする可能性があります:

// dso.cpp start 
#include <dso.h> 

Object* instance = new Object(); 

// the rest of the file 

しかし、dlopenのようなものは全く無関係である、私は考えます。

関連する問題