本篇博文旨在介绍C++的内存管理方式,并和C语言中的内存管理方式作出对比;说明了C语言中的malloc/free和C++中的new/delete的区别;介绍了定位new表达式,来模拟实现new和delete
C中的内存管理方式
堆上创建空间
malloc来申请空间,需要自行free进行释放
除了malloc外,还有calloc,realloc来申请
他们都需要free进行释放,否则会造成内存泄漏
栈上创建空间
编译器会自己在栈上动态开辟内存,利用_alloc来开辟,并自主进行维护
C语言中常见的几种内存泄漏
情况1:忘记了释放
//去做其他事情了,忘记了释放
void FunTest1()
{
int* pTest = (int*)malloc(10 * sizeof(int));
assert(pTest != NULL);
//do other