比较乱 还待需整理
https://blog.csdn.net/freeelinux/article/details/53782986
虚拟内存管理
虚拟内存将每个程序使用的内存切割成 == 小型的、固定大小的**“页”**==单元。
交换区: 将程序中未使用的页保存,仅在需要时会被载入物理内存(发生页面错误,内核即刻挂起进程的执行,从磁盘中将该页面载入内存)
页表(内核进行维护):描述了每页在该进程虚拟地址空间中的位置。
虚拟内存的优点:
进程内存布局(5类,虚拟内存的概念)
内存分配(new和malloc的区别)
https://mp.csdn.net/mdeditor/88857915#
new之后,程序可以访问任何内存地址,但此时物理内存页尚未分配,内核会在进程首次访问这些虚拟内存地址时自动分配新的物理内存页
malloc()和free()原理
内存泄漏
https://www.cnblogs.com/liushui-sky/p/7727865.html
定义:在编写应用程序的时候,程序分配了一块内存,但已经不再持有引用这块内存的对象(通常是指针),虽然这些内存被分配出去,但是无法收回,将无法被其他的进程所使用,我们说这块内存泄漏了,被泄漏的内存将在整个程序声明周期内都不可使用。
主要原因:
- 是在使用new或malloc动态分配堆上的内存空间,而并未使用delete或free及时释放掉内存。
- 野指针:指向被释放的或者访问受限内存的指针