c/c++动态内存申请与释放

本文详细介绍了C/C++中动态内存的申请与释放,包括C语言的标准库函数和C++中的new/delete运算符。C++的new特性如内置sizeof、类型安全检查,以及如何进行二维数组的动态分配与释放。同时对比了new/delete与malloc/free的区别,如操作对象和用法上的差异。

1,C中内存申请有哪些(标准库函数)

函数名

函数原型作用例子二维数组的申请,释放
mallocvoid * malloc(size_t size)

动态内存的申请

函数本身不知内存类型,关心内存的总字节数

int * p =(int *)malloc(sizeof(int)* length);

(1)INT ** P =(INT **)的malloc(的sizeof(INT *)*米);

for(int i = 0; 我<M; 我++)

  p [i] =(int *)malloc(sizeof(int)* n);

 

(2)//申请三行两列的整形数组

int(* a)[2] =(int * [2])malloc(sizeof(int)* 3 * 2);

(3)用一个一位数组来模拟二维数组

int * array =(int *)malloc(nows * columns * sizeof(int));

使用的时候:阵列[I *列+ j]的访问第I,J个成员

reallocvoid * realloc(void * ptr,unsigned newsize)给一个申请已经了的内存指针重新分配内存,调整内存块的大小

int * p =(int *)malloc(sizeof(int)* length);

p = realloc(p,20);

callocvoid * calloc(size_t num,size_t sizeofElement)与的的的malloc的差不多,会对里面数据进行初始化为0char * ptr =(char *)calloc(length,sizeof(char *));
自由void free(void * p)释放内存自由(P); 

2,C ++中内存申请/释放

           新的(C ++中运算符)/删除,新的内置了sizeof,类型转换,类型安全检查功能,对与非内部数据对象,完成初始化工作。

          用法:1,int * p = new int [length];

                            删除[P];

                   2,int ** p = new int * [m]; //二维数组申请

                        for(int i = 0; i<M; i++)

                             p [i] = new int [n];

                        for(int i = 0; i<N; i ++)//二维数组释放

                            {delete p [i];

                            P [I] = nullptr; }

                        删除[] p;

                        P = nullptr;

3,新/删除与的malloc /免费区别

(1)相同点;用于动态内存的申请和释放

(2)不同点:1,操作对象不同

                             对于非内部数据对象,malloc / free无法满足动态对象的要求

                         2,用法不同(见表格)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值