簡體   English   中英

dlopen上的錯誤:St9bad_alloc

[英]Error on dlopen: St9bad_alloc

我有一些用於測試的c ++代碼,其中第一行是對dlopen的調用,以嘗試加載共享對象。 碰到這一行,我得到以下錯誤:

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

我已經調高了內存(free -m現在報告說,我的exe加載到gdb中時,我有〜120 MB的空閑空間),但我仍然收到相同的消息。

任何人對導致此問題的其他想法以及我該如何解決?

看看C ++ dlopen mini HOWTO ,希望對您有所幫助。

我的猜測是dlopen與它無關。 dlopen()是C語言函數,它不能引發異常。 實際上可以拋出它的是共享對象中的初始化函數,例如,分配給靜態對象的表達式。 例如,如果您在正在加載的共享對象中編寫此代碼,則它可能會因bad_alloc崩潰:

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

Object* instance = new Object();

// the rest of the file

但是,我認為dlopen完全無關緊要。

可能是因為它找不到所有依賴項。

將目錄更改為應用程序所在的目錄。
然后在要加載的共享庫上使用nm(與代碼中使用的路徑相同)。
這將顯示所有丟失的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM