github地址
在項目中遇到一個問題,析構函數沒有調用產生了內存泄露。
具體見valgrind檢測libevent內存泄露
我們看兩個例子
- demo1
class Test1;
void del(Test1* obj){delete obj;
}
class Test1{
public:Test1(){printf("Test1\r\n");}~Test1(){printf("~Test1\r\n");}
};
int main()
{Test1* obj = new Test1();del(obj);return 0;
}
- demo2
class Test2{
public:Test2(){printf("Test2\r\n");}~Test2(){printf("~Test2\r\n");}
};
void del(Test2* obj){delete obj;
}
int main()
{Test2* obj = new Test2();del(obj);return 0;
}


這里是類的前置聲明問題,1中函數del()
只是知道Test
是一個類,但是并不知道其析構函數所在的地址,所以無法調用其析構函數。