1. C/C++程序内存划分
1.1 内核区
1.2 用户区
栈区
共享区
堆区
代码区
数据区
2. C语言中的内存管理方式
2.1 申请
malloc
calloc
realloc
原型+区别(返回值和参数的区别)
2.2 释放
free
3. new /delete 和 new[] /delete[]
3.1 使用方式
3.2 底层实现原理
3.2.1 new的实现原理
内置类型:调用void *operator new(size_t size)------->循环调用malloc
自定义类型:
- 调用void* operator new(size_t size)------->循环调用malloc
- 调用构造函数初始化对象
3.2.2 delete的实现原理
3.2.3 new[]的实现原理
3.2.4 delete[]的实现原理
4. void* operator new(size_t size)和void operator delete(void*)可以重载
5.定义为new表达式
语法格式
使用场景:内存池
6. 常见面试题
malloc/free和new/delete的区别?
内存泄漏?
malloc底层实现原理(了解)