进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap: 1.brk是将数据段的(.data)的最高地址指针_edata往高地址推 2.mmap是虚拟地址空间找一个空闲的虚拟内存 如果malloc < 128K,那么会用brk进行分配,推动指针. 实际上并没有建立映射关系,只有当第一次读写数据的时候,才会引起缺页中断,分配相应的内存. 否则会直接使用mmap系统调用 主要是因为内存需要等到高地址释放后才能释放(A必需在B之后进行释放.因此产生内存碎片).而mmap直接释放 brk和sb…