は、シナリオ1のスタックまたはヒープでfuncVarですか?inderectヒープ割り当てのスタックまたはヒープ
私はそれが疑わしいので、私は尋ねているので、これはメモリリークを最小限に抑えるための良い方法かもしれません。つまり、シナリオ1のように間接的にヒープ上に物事を置くヒープ上の上位レベルにコードを配置する方が良いかもしれません。
シナリオ2では、決して呼ばれることはありません。シナリオ1のようにコードを使用することにより、私はシナリオのシナリオ2.
シナリオ1
class Test{
int memVar = 1;
void func(){
int funcVar = 2;
SomeClass::someFuncThatCouldCrash();
}
};
Test* t = new Test();
シナリオ2
class Test{
int memVar = 1;
void func(){
int* funcVar = new int(2);
SomeClass::someFuncThatCouldCrash();
delete funcVar; //May not free due to crash in line above;
}
};
Test t; //or Test* t = new Test()
このコードの目的は明確ではありません。 'funcVar'はそれに割り当てられた値を除いて決して使用されません。' someFuncThatCouldCrash'はそれを変更しません。 – Xirema
ありがとう、iircとRyanP、私はより明確になるようにコードを整理しました。 Xiremaは、このコードは有用なことをしません、私はそれをきれいに保つために、配分とメモリクリーンアップに集中していました。 – code
_シナリオ1のスタックまたはヒープにfuncVarがありますか?誰かがスタックでもヒープでもないと言います。 – skypjack