系统调用
- 堆上内存-------属于外部资源
- 申请、释放外部资源-------用户态没有权限,内核态有权限
- 堆上的内存申请和释放的过程需要内核态完成-------从用户态切换到内核态
- 系统调用(cout,printf,cin,scanf)
内存池
- 内存池------用户态自己维护的一大段内存
- 重载new和delete相当于留下了一个可修改的端口,可以指定内存的申请和释放的内存池
- C++自带的内存池_Alloc
new和delete的重载
class Tmp
{
public:
Tmp()
{
cout << "Tmp()" << endl;
}
~Tmp()
{
cout << "~Tmp()" << endl;
}
void* operator new(size_t size)
{
cout << "void* operator new(size_t size)" << endl;
void* p = malloc(size);
return p;
}
void operator delete(void* p)
{
cout << "void operator delete(void* p)" << endl;
free(p);
}
};