有一個創建的類拋出一個new
關鍵字和一個指向它的指針,然後調用一個方法從類中銷燬它自己的類,我是否需要從內存中釋放內存指針與否?財產以後這樣的:C++指針類和類的破壞
.H
#include <list>
#include <iostream>
class Test
{
public:
Test();
~Test();
void destroy();
bool operator==(Test& right){return id == right.id;};
private:
static int count;
std::list<Test*>::size_type id;
static std::list<Test*> instances;
};
的.cpp
#include "Test.h"
int Test::count = 0;
std::list<Test*> Test::instances;
Test::Test()
{
instances.push_back(this);
id = count++;
}
Test::~Test()
{
}
void Test::destroy()
{
for(auto t : instances){
if(*t == *this)
{
delete t;
break;
}
}
}
源
Test* n = new Test();
n->destroy();
所以我的問題是內存指向n被釋放出來?或者我應該打電話delete n
這是惡意代碼... – nneonneo
爲什麼在range-for循環中,你只想刪除'this'指向的當前元素的元素?在這種情況下你不是在泄漏記憶嗎? – 0x499602D2
是的,在銷燬,只是有**刪除此; **,但它看起來像你可以只是做**刪除N; **保存所有的麻煩。使用類似*刪除這個的一個原因是*;如果你想在destroy(。)中減少引用計數,並且只有在0時才刪除。 – thang