Linux 动态内存分配与对齐全解析
1. 动态内存分配概述
在大多数进程的地址空间中,包含了一些映射文件,如程序可执行文件、C 语言及其他共享库,还有数据文件。可以通过查看 /proc/self/maps 或 pmap 程序的输出,来了解进程中的映射文件情况。
动态内存是内存管理系统的基础,它在运行时分配,而非编译时,并且分配的大小可能直到分配时刻才确定。当开发者无法提前知晓所需内存的大小或使用时长时,就需要使用动态内存。例如,存储文件内容或从键盘读取的输入,由于文件大小未知,用户输入的字符数量也不确定,因此需要动态调整缓冲区大小。
2. 经典动态内存分配函数:malloc()
在 C 语言中,获取动态内存的经典接口是 malloc() 函数,其原型如下:
#include <stdlib.h>
void * malloc (size_t size);
- 成功调用时,
malloc()会分配size字节的内存,并返回指向新分配内存区域起始位置的指针。需要注意的是,分配的内存内容是未定义的,不会自动初始化为零。 - 调用失败时,
malloc()返回NULL,并将errno设置为ENOMEM。
超级会员免费看
订阅专栏 解锁全文
88

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



