C++动态内存管理

        malloc/calloc/realloc/free

1、malloc调用形式为(类型*)malloc(size)。在内存的动态存储区中分配长度为“size”

字节的连续区域,返回该区域的首地址,此时内存中的值没有初始化,是一个随机值。
2、calloc 调用形式为(类型*)calloc(n,size)。在内存的动态存储区中分配n块
长度为“size”字节的连续区域,返回首地址,此时内存中的值都被初始化为0。
3、realloc 调用形式为(类型*)realloc(*ptr,size)。将ptr内存大小增大到“size”,新
增加的内存块没有被初始化。

4、free 调用形式为free(void *ptr)。释放ptr所指的内存空间。

C++通过new和delete动态管理内存

new/delete动态管理对象

new[]/delete[]动态管理对象数组

C++动态内存管理


void Test()
{
int* p4 = new int;//动态分配4个字节(1个int)的空间单个数据
int* p5 = new int(3);//动态分配4个字节(1个int)的空间并初始化为3
int* p6 = new int[3];//动态分配12个字节(3个int)的空间.


delete p4;
delete p5;
delete
 p6;

}

注意:malloc/free,new/delete,new[]/delete[]  一定匹配使用,否则会出现内存泄漏甚至崩溃的问题。

malloc/free和new/delete的区别和联系

1.他们是动态管理内存的入口。

2.malloc/free是c/c++标准库的函数,new/delete是c++操作符。

3.malloc/free只是动态分配内存空间,而new/delete除了分配空间还会构造函数和析构函数进行初始化和清理(清理成员)。

4.malloc/free需要手动计算内存大小且返回值会void*,new/delete可自己计算类型的大小,返回对应类型的指针。