1.一種內存管理方法,其特征在于,該方法包括:
接收來自應用程序的內存調用請求;
根據所述內存調用請求,從LD_PRELOAD環境變量所指定的動態庫調用相應的API來進行內存調用;以及
記錄與所述內存調用請求相關的信息,所述內存調用請求相關的信息包含所述內存調用請求所申請的內存大小及所述應用程序的調用函數的地址。
2.根據權利要求1所述的方法,其特征在于,所分配的內存包含設置于其頭部的頭部魔術字及設置于其尾部的尾部魔術字。
3.根據權利要求1所述的方法,其特征在于,該方法還包括:
通過哈希表管理所述內存調用請求相關的信息,所述哈希表的任一表項包括所述應用程序的內存申請統計及所述應用程序的調用函數的地址的對應關系。
4.根據權利要求3所述的方法,其特征在于,所述通過哈希表管理所述內存調用請求相關的信息包括:
在接收到來自應用程序的內存調用請求時,根據所述應用程序的調用函數的地址在所述哈希表內查找,以確定在所述哈希表中是否存儲有所述應用程序的調用函數的地址,
當所述哈希表存儲有所述應用程序的調用函數的地址時,在對應表項的內存申請統計加入本次申請的內存大小;
或者,
在接收到來自應用程序的內存釋放請求時,根據所述應用程序的調用函數的地址在所述哈希表內查找,以確定在所述哈希表中是否存儲有所述應用程序的調用函數的地址;
當所述哈希表存儲有所述應用程序的調用函數的地址時,從對應表項的內存申請統計減去本次釋放的內存大小。
5.根據權利要求3所述的方法,其特征在于,該方法還包括:
遍歷所述哈希表,獲取內存調用請求相關的信息,以進行內存泄漏調試。
6.根據權利要求1所述的方法,其特征在于,所述應用程序的調用函數的地址通過builtin_return_address函數獲取。
7.一種內存管理設備,其特征在于,該設備包括:
接收單元,用于接收來自應用程序的內存調用請求;
動態庫確定單元,用于根據所述內存調用請求,從LD_PRELOAD環境變量所指定的動態庫調用相應的API來進行內存調用;以及
記錄單元,用于記錄與所述內存調用請求相關的信息,所述內存調用請求相關的信息包含所述內存調用請求所申請的內存大小及所述應用程序的調用函數的地址。
8.根據權利要求7所述的內存管理設備,其特征在于,所分配的內存包含設置于其頭部的頭部魔術字及設置于其尾部的尾部魔術字;
所述應用程序的調用函數的地址通過builtin_return_address函數獲取。
9.根據權利要求7所述的內存管理設備,其特征在于,該內存管理設備還包括:
管理單元,用于通過哈希表管理所述內存調用請求相關的信息,所述哈希表的任一表項包括所述應用程序的內存申請統計及所述應用程序的調用函數的地址的對應關系;以及
遍歷單元,遍歷所述哈希表,獲取內存調用請求相關的信息,以進行內存泄漏調試。
10.根據權利要求9所述的內存管理設備,其特征在于,所述管理單元包括:
第一確定模塊,用于在接收到來自應用程序的內存調用請求時,根據所述應用程序的調用函數的地址在所述哈希表內查找,以確定在所述哈希表中是否存儲有所述應用程序的調用函數的地址,
內存統計模塊,用于當所述哈希表存儲有所述應用程序的調用函數的地址時,在對應表項的內存申請統計加入本次申請的內存大小;
或者,
第二確定模塊,用于在接收到來自應用程序的內存釋放請求時,根據所述應用程序的調用函數的地址在所述哈希表內查找,以確定在所述哈希表中是否存儲有所述應用程序的調用函數的地址;
內存釋放模塊,用于當所述哈希表存儲有所述應用程序的調用函數的地址時,從對應表項的內存申請統計減去本次釋放的內存大小。