一句话理解
内存是计算机放数据的地方,变量就占其中一小块。
为什么要学
数组很大、递归很深时,会占很多内存。后面会遇到 MLE。
讲解
可以把内存想成一排带编号的格子。变量占用其中若干格。
int 通常占 4 个字节,long long 通常占 8 个字节。开 int a[1000000] 大约是 4MB 量级。
程序结束,这些格子就还给系统。局部变量尤其短命:函数结束就没了。
例子
int a = 10; // 占一块放整数的格子
long long b = 10; // 通常比 int 更宽
int c[5]; // 连续 5 个 int 格子
单个整数占得很少;真正容易爆内存的是大数组、很多层递归、以及复制了巨大的容器。
常见错误
- 以为变量不占空间。
- 随手开
int a[10000][10000],大约 400MB,很多题会爆。