dlopenのエラー:St9bad_alloc
-
05-07-2019 - |
質問
私は、共有オブジェクトをロードしようとして、最初の行がdlopenの呼び出しであるテストに使用しているc ++コードをいくつか持っています。この行を押すと、次のエラーが表示されます。
Terminate called after throwing an instance of std::bad_alloc:
what() : St9bad_alloc
メモリをアップしました(free -mは、exeがgdbにロードされたときに〜120 MBの空きがあることを報告します)。それでも同じメッセージが表示されます。
これを引き起こしている可能性のあるアイデアについては誰でも&解決するために私にできることは何ですか?
解決
C ++ dlopen mini HOWTO をご覧ください。 p>
他のヒント
私の推測では、dlopenはそれとは何の関係もありません。 dlopen()はC言語関数であり、例外をスローすることはできません。実際にスローできるのは、共有オブジェクトの初期化関数、たとえば静的オブジェクトに割り当てる式です。たとえば、ロードしている共有オブジェクトにこれを書き込むと、bad_allocでクラッシュする可能性があります。
// dso.cpp start
#include <dso.h>
Object* instance = new Object();
// the rest of the file
しかし、dlopenのものはまったく無関係です、と思います。
おそらく、すべての依存関係を見つけることができないためです。
ディレクトリをアプリケーションが存在するディレクトリに変更します。
次に、ロードしようとしている共有ライブラリでnmを使用します(コードで使用したのと同じパス)。
これにより、不足している依存関係が表示されます。
所属していません StackOverflow