前言
之前已经介绍过了在Windows环境下和Linux环境下分别检测内存泄露使用的方法,但是这些内存检测的函数或是工具他们具体是依据什么样的原理来进行实现的呢?这里将在这篇文章中进行简单的分析和解读。
1. 动态分配的原理
当我们在程序中写下new和delete时,我们实际上调用的是C++语言内置的new operator和delete operator。所谓语言内置就是说我们不能更改其含义,它的功能总是一致的。以new operator为例,它总是先分配足够的内存,而后再调用相应的类型的构造函数初始化该内存。而delete operator总是先调用该类型的析构函数,而后释放内存。我们能够施加影响力的事实上就是new operator和delete operator执行过程中分配和释放内存的方法。
new operator为分配内存所调用的函数名字是operator new,其通常的形式是
void * operator new(size_t size)
其返回值类型是void*,因为这个函数返回一个未经处理(raw)