内存分配和释放的函数

多个-alloc的比较:
    alloc:唯一在栈上申请内存的,无需释放;
    malloc:在堆上申请内存,最常用;
    calloc:malloc+初始化为0;
    realloc:将原本申请的内存区域扩容,参数size大小即为扩容后大小,因此此函数要求size大小必须大于ptr内存大小
malloc和calloc的区别是1块与n块的区别和初始化
realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。

转载于:https://www.cnblogs.com/upup-2015/p/5036600.html

重载内存分配释放函数是指在C++中,可以自定义类的内存管理方式,通过重载operator newoperator delete函数来实现。具体实现方式如下: 1. 重载operator new函数 operator new函数是C++中用来分配内存函数,重载该函数可以自定义类的内存分配方式。其声明如下: void* operator new (size_t size); 其中,size_t是一个无符号整数类型,代表要分配的内存大小。重载该函数时,需要返回一个void指针,指向分配的内存空间。 例如,下面是一个简单的重载operator new函数的示例: void* operator new (size_t size) { void* p = malloc(size); if (p == nullptr) { throw std::bad_alloc(); } return p; } 该函数使用了标准库中的malloc函数分配内存空间,并判断是否分配成功。如果分配失败,则抛出std::bad_alloc异常。 2. 重载operator delete函数 operator delete函数是C++中用来释放内存函数,重载该函数可以自定义类的内存释放方式。其声明如下: void operator delete (void* ptr); 其中,ptr是一个指向要释放内存空间的指针。重载该函数时,不需要返回任何值。 例如,下面是一个简单的重载operator delete函数的示例: void operator delete (void* ptr) { free(ptr); } 该函数使用了标准库中的free函数释放内存空间。 3. 重载operator new[]operator delete[]函数 operator new[]operator delete[]函数分别用于分配释放数组的内存空间。它们的声明用法与operator newoperator delete类似,只是需要传入数组的大小参数。 例如,下面是一个重载operator new[]operator delete[]函数的示例: void* operator new[] (size_t size) { void* p = malloc(size); if (p == nullptr) { throw std::bad_alloc(); } return p; } void operator delete[] (void* ptr) { free(ptr); } 该函数与上面的示例相似,只是针对数组进行了内存分配释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值