malloc和free
malloc和free
1. malloc和free的概念
malloc和free是C语言中用于动态内存分配和释放的函数。malloc函数用于分配一块指定大小的内存空间,返回指向该内存空间的指针;free函数用于释放之前分配的内存空间,将该内存空间标记为可用。
2. malloc和free的使用
|
3. malloc和free的原理
malloc和free的实现原理是通过操作系统提供的系统调用来分配和释放内存。当调用malloc函数时,操作系统会在堆区中找到一块合适大小的空闲内存块,并返回其起始地址;当调用free函数时,操作系统会将该内存块标记为可用,以便后续的malloc调用可以再次使用。
malloc 会额外分配一些内存用于存储分配的内存块的大小等信息,以便在调用 free 函数时能够正确释放内存。
PREFIX_SIZE 是用于存储额外信息的大小,通常是一个指针大小的倍数,以保证内存对齐。
3.1 redis 中 malloc 和 free 的实现
redis 中的内存分配和释放是通过自定义的内存分配器实现的,主要包括以下几个函数:
- zmalloc:分配内存
- zfree:释放内存
- zrealloc:重新分配内存
- zcalloc:分配并初始化内存
- zmalloc_usable:获取可用内存大小
- zmalloc_size:获取内存大小
- zmalloc_get_rss:获取内存占用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Haostart 的个人站点!
评论