Double free or corruption after queue::push

前端 未结 6 983
礼貌的吻别
礼貌的吻别 2020-11-27 02:54
#include 
using namespace std;

class Test{
    int *myArray;

        public:
    Test(){
        myArray = new int[10];
    }

    ~Test(){
        de         


        
6条回答
  •  醉酒成梦
    2020-11-27 03:27

    You can also try to check null before delete such that

    if(myArray) { delete[] myArray; myArray = NULL; }
    

    or you can define all delete operations ina safe manner like this:

    #ifndef SAFE_DELETE
    #define SAFE_DELETE(p) { if(p) { delete (p); (p) = NULL; } }
    #endif
    
    #ifndef SAFE_DELETE_ARRAY
    #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p) = NULL; } }
    #endif
    

    and then use

    SAFE_DELETE_ARRAY(myArray);
    

提交回复
热议问题