大家好,今天详细分析一下,内存分配情况,内存是计算机中必不可少的资源,因为 CPU 只能直接读取内存中的数据,所以当 CPU 需要读取外部设备(如硬盘)的数据时,必须先把数据加载到内存中。
我们来看看可爱的内存长什么样子的吧,如图所示:
一、内存申请
通常使用高级语言(如Go、Java 或 Python 等)都不需要自己管理内存(因为有垃圾回收机制),但 C/C++ 程序员就经常要与内存打交道。
当我们使用 C/C++ 编写程序时,如果需要使用内存,就必须先调用 malloc 函数来申请一块内存。但是,malloc 真的是申请了内存吗?
我们通过下面例子来观察 malloc 到底是不是真的申请了内存:
1#include <stdlib.h>
2
3int main(int argc, char const *argv[])
4{
5 void *ptr;
6
7 ptr = malloc(1024 * 1024 * 1024); // 申请 1GB 内存
8
9 sleep(3600); // 睡眠3600秒, 方便调试
10
11 return 0;
12}
上面的程序主要通过调用 malloc 函数来申请了 1GB 的内存,然后睡眠 3600 秒,方便我们查看其内存使用情况