重载new和delete,处理内存溢出

很多时候,我们使用new/delete来分配和释放内存。那么这篇问题主要讲的是,使用new来处理实际编程中可能出现的内存泄漏的问题。奇怪,既然你说delete可以释放内存呢,只要用好这两个函数,保证匹配不就得了。然后这是一种很被动的做法,当内存泄露了,问题显现出来知道时,事态可能已经很严重了。
那么我们该如何处理呢?
主要思路是重载new和delete。
先提供一个如何重载全局new和delete的简单例子。

//Overload global new/delete
#include <cstdio>
#include <cstdlib>
using namespace std;

void * operator new(size_t sz)
{
    printf("operator new:%d Bytes\n",sz);
    void* m = malloc(sz);
    if(!m)
        puts("out of memory");
    return m;
}

void operator delete(void *m)
{
    puts("operator delete");
    free(m);
}

class S{
    int i[100];
public:
    S() {
  puts("S::S()");}
    ~S() {
  puts("S::~S()");}
};

int main()
{
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值