Linux 动态内存分配与管理全解析
1. 引言
在编程中,内存管理是至关重要的一部分。大多数地址空间包含一些映射文件,如程序可执行文件本身、C 和其他共享库以及数据文件。可以查看 /proc/self/maps 或 pmap 程序的输出,以了解进程中的映射文件示例。本文将详细介绍 Linux 中动态内存的分配、使用和释放,以及数据对齐等相关知识。
2. 动态内存分配基础
动态内存是在运行时分配的,而不是在编译时。当所需内存量或使用时长在程序运行前未知时,就需要使用动态内存。例如,存储文件内容或键盘输入时,由于文件大小和用户输入的字符数不确定,缓冲区大小会变化,可能需要动态增大。
在 C 语言中,没有直接由动态内存支持的变量类型。例如,C 不提供直接获取存在于动态内存中的 struct pirate_ship 的机制,而是提供了分配足够内存来容纳该结构的方法,程序员通过指针与该内存进行交互。
2.1 malloc() 函数
malloc() 是获取动态内存的经典 C 接口:
#include <stdlib.h>
void * malloc (size_t size);
成功调用 malloc() 会分配 size 字节的内存,并返回指向新分配区域起始位置的指针。内存内容未定义,不保证为
超级会员免费看
订阅专栏 解锁全文
1518

被折叠的 条评论
为什么被折叠?



