Linux 动态内存管理全解析
1. 动态内存分配概述
在编程中,内存存在自动变量和静态变量等形式,但动态内存的分配、使用和释放是任何内存管理系统的基础。动态内存是在运行时分配的,而非编译时,其大小在分配时可能才确定。当开发者无法提前知晓所需内存的数量或使用时长时,就需要动态内存。例如,存储文件内容或键盘输入时,由于文件大小未知,用户输入的按键数量也不确定,因此缓冲区大小会动态变化,可能需要根据读取的数据量动态调整。
在 C 语言中,没有直接由动态内存支持的变量类型。例如,C 语言没有提供直接获取存在于动态内存中的 struct pirate_ship 的机制,而是提供了分配足够内存以容纳该结构体的方法,程序员通过指针来操作这块内存。
2. 经典的动态内存分配函数:malloc()
malloc() 是 C 语言中用于获取动态内存的经典接口,其原型如下:
#include <stdlib.h>
void * malloc (size_t size);
成功调用 malloc() 会分配 size 字节的内存,并返回指向新分配内存区域起始位置的指针。需要注意的是,分配的内存内容是未定义的,不要期望其初始值为零。若分配失败, malloc() 返回 NULL ,并将 errno 设置为 ENOMEM
超级会员免费看
订阅专栏 解锁全文
1590

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



