次のような二重にリンクされたリストがあるとします
class list
{
/*...*/
private:
struct node
{
node* prev;
node* next;
int* value;
}
node* first; //NULL if none
node* last; //NULL if none
/*...*/
}
最初のノードを削除し、その値へのポインタを返す関数を書きたい場合、この実装はメモリ リークを起こしますか?
int* returnFrontValue()
{
if(list_is_Empty())
throw -1;
else
{
node* v = first;
int* returnMe = v->value;
first = first->next;
if(!first)
last = NULL;
delete v;
first->prev = NULL;
return returnMe;
}
}
returnMe
動的に割り当てられた int を指しているために、この実装がメモリ リークを起こすかどうか興味があります。代わりに and を最後にint returnMe = *(v->value);
返す方がよいでしょうか?&returnMe;
私のdelete v->value;
前に明示的にする必要がありdelete v;
ますか?さまざまなポインターがある場合、メモリの削除がどのように機能するかについて混乱しています。