标签:动态 baidu targe 空间 内存分配 地址 eve ref 占用
从编程层面来说:
1.尽可能少开辟内存空间,尽量复用内存空间
2.使用完内存空间后,尽快释放掉。
3.合理使用Union可以减小内存占用
4.合理安排struct或者class中的成员变量的位置
5.已知大小的数组静态开辟,未知大小的采用动态开辟
6.可以自己手动维护内存分配。(在申请的内存很小时 有用)一次申请一大块内存,然后分成将其分成小块,每次用的时候将小块分配出去,释放的时候大块一起释放。
比如说,在内存单元100的起始地址到内存单元200之间,一共申请了100块1字节的区域,但是释放的时候,先释放了内存地址为基数的单元,如释放101、103...而偶数单元不释放,释放50次后,虽然还有50字节的内存是空余的,但是如果下次要申请2字节的内存单元,是无法在100到200之间申请到的,因为这个区域没有连续的2字节空间,这就是内存碎片。
从OS层来说:
1.段页式内存管理: 现在普遍采用的段页式内存分配方式就是将进程的内存区域分为不同的段,然后将每一段由多个固定大小的页组成。通过页表机制,使段内的页可以不必连续处于同一内存区域,从而减少了外部碎片,然而同一页内仍然可能存在少量的内部碎片,只是一页的内存空间本就较小,从而使可能存在的内部碎片也较少。
标签:动态 baidu targe 空间 内存分配 地址 eve ref 占用
原文地址:http://www.cnblogs.com/luntai/p/6287579.html