c/c++动态开辟空间的方式及比较

本文详细探讨了C语言中的malloc、calloc、realloc动态内存管理方式,以及C++中的new操作符,分析了它们的异同点。在C语言中,malloc、calloc、realloc都需要手动释放,且realloc在失败时不释放原内存。而在C++中,new会自动调用构造函数和析构函数,提供了更安全的内存管理机制。
摘要由CSDN通过智能技术生成

C语言动态内存开辟的管理方式

malloc/calloc/realloc
malloc/calloc/realloc开辟空间的相同点:

  1. 都是C语言的库函数,在使用时都必须包含相应的头文件
  2. 都是从堆上申请空间,使用完成时必须要通过free来进行释放,否则,内存泄漏
  3. 申请空间成功后,返回空间的首地址,申请失败返回NULL,因此在使用时必须判空
  4. 返回值类型为void*,在使用时要进行强制类型转化
void Test () 
{
    
     //malloc
     int* p1 = (int*) malloc(sizeof(int)); 
     free(p1);
     //calloc
     int* p2 = (int*)calloc(4, sizeof (int)); 
     // realloc
     int* p3 = (int*)realloc(p2, sizeof(int)*10);  
     free(p3 ); 
}

malloc/calloc/realloc开辟空间的不同点:
malloc:

#include<stdlib.h>/#include<malloc.h>
void *malloc( size_t size );

malloc只是开空间,参数是要申请空间的字节大小

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值