常见的C++内存管理错误

目录

1.未能正确检查内存分配失败 

2.不当配对的内存管理函数

3.多次释放内存

4.解引用空指针

5.写入已经被释放的内存

       C++ 程序的动态内存管理非常复杂,容易出现缺陷。常见的与内存管理相关的编程缺陷,包括未能正确处理分配失败,解引用空指针,写入已经释放的内存,多次释放相同的内存,不当配对的内存管理函数,未区分标量和数组,以及分配函数使用不当。

1.未能正确检查内存分配失败 

     下面的代码fail部分不会执行,new 运算符要么返回成功或者抛出一个异常,else 语句永远不会执行。

    int* ip = new int;

    if (ip)
    {
        std::cout << "pass" << std::endl;
    }
    else
    {
        std::cout << "fail" << std::endl;
    }

可以使用new 的nothrow 形式,分配失败返回一个空指针

    int* k = new (std::nothrow) int ;
2.不当配对的内存管理函数

C++ 和c 使用不同的内存管理函数,但是很多人在写代码的时候会混用c和C++ 。如果使用的时候没有注意就会发生错误的配对,C++ 中应该使用new 和delete ,以及new[],C 中使用malloc 和fre

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值