#include <string.h>
#include <stdio.h>
typedef struct {
char a[1024];
} AA;
static AA a[102400];
int main(int argc, char **argv)
{
getchar();
memset(a, 0, sizeof(a)/2);
getchar();
}
我试图了解elf .bss的内存成本。以上是我的测试程序。程序启动时,它只使用很少的内存,因此我认为静态Aa a [102400]根本没有映射。当我按Enter键使其成为阵列的一半时,将消耗50M内存。这是否意味着linux内核支持动态映射.bss节,所以我不需要关心未使用的全局/静态可变项的内存浪费?
[.bss
部分被映射为写时复制到零页。