文件名称:内存数据结构-树莓派4b+opencv4+python 打开摄像头的实现方法
文件大小:2.26MB
文件格式:PDF
更新时间:2024-06-22 11:26:04
opensll 加密 解密 数据安全 网络安全
第五章 内存分配 5.1 openssl内存分配 用户在使用内存时,容易犯的错误就是内存泄露。当用户调用内存分配和释放函数 时,查找内存泄露比较麻烦。openssl提供了内置的内存分配/释放函数。如果用户完全 调用 openssl的内存分配和释放函数,可以方便的找到内存泄露点。openssl分配内存时, 在其内部维护一个内存分配哈希表,用于存放已经分配但未释放的内存信息。当用户申 请内存分配时,在哈希表中添加此项信息,内存释放时删除该信息。当用户通过 openssl 函数查找内存泄露点时,只需查询该哈希表即可。用户通过 openssl回调函数还能处理 那些泄露的内存。 openssl 供用户调用的内存分配等函数主要在 crypto/mem.c 中实现,其内置的分配 函数在 crypto/mem_dbg.c中实现。默认情况下 mem.c中的函数调用 mem_dbg.c中的实 现。如果用户实现了自己的内存分配函数以及查找内存泄露的函数,可以通过调用 CRYPTO_set_mem_functions 函数和 CRYPTO_set_mem_debug_functions 函数来设置。 下面主要介绍了 openssl内置的内存分配和释放函数。 5.2 内存数据结构 openssl 内存分配数据结构是一个内部数据结构,定义在 crypto/mem_dbg.c 中。如 下所示: typedef struct app_mem_info_st { unsigned long thread; const char *file; int line; const char *info; struct app_mem_info_st *next; /* tail of thread's stack */ int references; } APP_INFO; typedef struct mem_st { void *addr; int num; const char *file; int line; unsigned long thread; unsigned long order; time_t time; APP_INFO *app_info;