1.程序内存虚拟内存布局。
2.内存使用状态。
3.Win32平台下,使用内存的方式。
•(1)CRT函数系如malloc/new/free/delete等;
•(2)GlobalAlloc/LocalAlloc系列函数;
•(3)虚拟内存函数如VirtualAlloc/VirtualFree等;
•(4)内存映射文件函数CreateFileMapping/MapViewOfFile等;
•(5)堆内存函数HeapCreate/HeapAlloc等;
调用关系:
• new/malloc -> HeapAlloc –> VirtualAlloc
4.Coder自定义管理内存的方式。
•1.重载全局的new和delete操作符
•2.为单个类的new 和 delete 操作符重载
•3.为单个的类重载 new[ ]和delete[ ]
•4.内存池
5.内存工作集
6.内存耗尽处理。
•如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败,建议使用如下方法进行处理:
•(1) 判断指针是否为NULL,如果是则马上用return语句终止本函数。
•(2) 判断指针是否为NULL,如果是则马上用exit(1)终止整个程序的运行。
•(3)使用set_new_handler为new和malloc设置异常处理函数。
7.常见使用错误。
•1.内存分配未成功,却使用了它。
•2.内存分配虽然成功,但是尚未初始化就引用它。
•3.内存分配成功并且已经初始化,但操作越过了内存的边界。
•4.忘记了释放内存,造成内存泄露。
•5.释放了内存却继续使用它。
8.虚拟地址到物理地址映射
9.换页流程
说明:“脏”指的是上次进入物理内存中,是否被使用过。
10.内存碎片
11.主流内存管理方案