内存
文章平均质量分 79
菊头蝙蝠
这个作者很懒,什么都没留下…
展开
-
池式组件-内存池的原理及其实现
为什么要使用内存池?在客户端进行连接(如果有分配内存的需求)的时候,内存会频繁分配和使用(内存池就是为了避免频繁分配和释放)。如果有大量客户端连接,并且每次只占用一点内存,会出现很多的内存碎片内存池1.这个轮子要用,但不要自己造,原理一定要懂jemalloc (c实现)tcmalloc(c++实现)如果要使用内存池,不需要修改原来的代码,只需要进行宏定义和使用hook,就可以通过malloc来自动调用tcmalloc如何去实现一个内存池?通过一个链表节点,一个是指向的内存块地址,另一个是原创 2022-04-06 20:34:30 · 617 阅读 · 0 评论 -
使用mtrace进行内存泄漏检测
使用mtrace进行内存泄漏检测一、使用mtrace二、完整代码一、使用mtrace要加入头文件#include <mcheck.h>通过mtrace()和muntrace()放在要测试的代码的前后mtrace();void *p1 = malloc(10);void *p2 = malloc(20); //calloc, reallocfree(p1);void *p3 = malloc(20);void *p4 = malloc(20);free(p2);f原创 2022-04-14 16:46:24 · 957 阅读 · 0 评论 -
动手实现内存泄漏检测组件
c/c++没有垃圾回收机制,可能会出现内存泄漏出现原因:内存分配与内存释放,没有做到匹配1.如何预防内存泄漏?2.内存泄漏如何解决?1.如何知道内存泄漏2.如何定位代码哪一行引起的内存泄漏如何知道内存泄漏:每次malloc/calloc/realloc 就 +1每次free 就 -1如果正常退出,不为0,说明存在内存泄漏如何定位哪一行引起内存泄漏?1.c自带的宏,__FILE__、_ FUNCTION _和、__LINE__,可以定位到具体文件,函数,哪一行2.builtin_re原创 2022-04-14 17:35:01 · 1922 阅读 · 1 评论 -
mmap实现共享内存
mmap实现共享内存一、mmap参数二、内存不共享情况三、内存共享可以简单地理解共享内存:进程A中的一块内存空间和进程B中操作的一块内存空间是同一块内存空间更详细的原理可以参考,下面主要是如何使用mmap去实现共享内存。一、mmap参数通过man手册可以知道addr:共享内存的地址,如果为NULL,则会自动分配一块内存length:共享内存的长度prot:内存保护的一些flags(比如说:匿名,读,写权限等)flags:是否对其他进程可见,更新是否会传递到底层文件fd:文件描述符(用于原创 2022-04-14 20:52:00 · 2008 阅读 · 0 评论