Linux 动态内存管理全解析
1. 映射文件与内存管理接口概述
大多数地址空间包含少量映射文件,如程序可执行文件本身、C 语言及其他共享库和数据文件。可以查看/proc/self/maps或pmap程序的输出,了解进程中的映射文件示例。Linux 提供了一系列接口用于获取和释放内存、创建和销毁新的映射等。
2. 动态内存分配的重要性
动态内存是任何内存管理系统的基础,它在运行时分配,而不是编译时。当程序运行前无法确定所需内存的数量和使用时长时,就需要使用动态内存。比如存储文件内容或键盘输入,由于文件大小未知,用户输入的字符数量也不确定,所以缓冲区大小需要动态调整。
3. 使用malloc()分配动态内存
在 C 语言中,获取动态内存的经典接口是malloc():
#include <stdlib.h> void * malloc (size_t size);成功调用malloc()会分配size字节的内存,并返回指向新分配区域起始位置的指针。分配的内存内容是未定义的,不会自动清零。失败时,malloc()返回NULL,并将errno设置为ENOMEM。
以