本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!
作者| 慕课网精英讲师 朱广蔚
1. 内存管理概述
1.1 手动内存管理
在计算机发展的早期,编程语言提供了手动内存管理的机制,例如 C 语言,提供了用于分配和释放的函数 malloc 和 free,如下所示:
#include <stdlib.h>
void *malloc(size_t size);
void free(void *p);
代码块1234
- 函数 malloc 分配指定大小 size 的内存,返回内存的首地址
- 函数 free 释放之前申请的内存
程序员负责保证内存管理的正确性:使用 malloc 申请一块内存后,如果不再使用,需要使用 free 将其释放,示例如下:
#include <stdlib.h>
void test()
{
void *p = malloc(10);
访问 p 指向的内存区域;
free(p);
}
int main()
{
test();
}
代码块123456789101112131415
- 使用 malloc(10) 分配一块大小为 10 个字节的内存区域
- 使用 free§ 释放这块内存区域
如果忘记释放之前使用 malloc 申请的内存,则会导致可用内存不断减少,这种现象被称为 “内存泄漏”,示例如下:
#include <stdio.h>
#include <s