本文共 1205 字,大约阅读时间需要 4 分钟。
openssl供用户调用内存分配等函数主要在crypto/mem.c中实现,其那只的分配函数在crypto/mem_dbg.c中实现。默认情况下mem.c中函数mem_dbg.c中实现。如果用户的内存分配函数以及查找内存泄漏的函数,可以通过CRYPTO_set_mem_functions函数和CRYPTO_set_mem_debug_function函数来设置。
CRYPTO_THREAD_ID threadid;
struct app_mem_info_st *next;
const char *file; 分配内存的文件
CRYPTO_THREAD_ID threadid; 分配内存的线程ID
unsgined long order;第几次内存分配
APP_INFO *app_info;用于存放用户应用信息,为一个链表,里面存放了文件、行号以及线程ID等信息。
功能:本函数主要用于控制内存分配时,是否记录内存信息。如果不记录内存信息,将不能查找内存泄漏
本函数用于分配内存空间,如果内存记录标记开启,则记录用户申请内存。当需要记录内存信息时,改函数本身也需要申请内存插入哈希表,为了防止递归申请错误,他申请内存记录信息钱必须暂时关闭内存记录标记,申请完毕在放开。
释放内存,如果内存记录标记开启,还需要删除哈希表中对应的记录。
将内存泄漏输出到FILE中(文件或者标准输出),该函数调用CRYPTO_mem_leaks.
处理内存泄漏,输入参数为用户自己实现的处理内存泄漏的函数地址。该函数值需要处理一个内存泄漏,openssl通过lh_doall_arg调用用户函数来处理所有记录(泄漏的内存)
转载地址:http://pmwdb.baihongyu.com/