functionを宣言するがある場合int、最後にメモリを節約するためにfunctionそれを「解放」する必要がありますか?int
例:
void doSomething() {
int x = 0;
// do something with x
free(x); // needed?
}
functionを宣言するがある場合int、最後にメモリを節約するためにfunctionそれを「解放」する必要がありますか?int
例:
void doSomething() {
int x = 0;
// do something with x
free(x); // needed?
}
ここにあなたのための記憶管理の戒めがあります
いいえ。これは自動変数です。つまり、スコープ外になると割り当てが解除されます。
free()また、 C++ ではめったに使用しません。これは C 関数です。
いいえ、を使用して動的にメモリを割り当てた場合にのみ、メモリを解放する必要がありますnew。この場合、この変数はスタックにあり、関数が終了すると破棄されます。
いいえ。intオブジェクトには自動保存期間があります。スコープの終わり、つまり関数の終了時に破棄されます。
freeいずれにせよ、C++で使用するべきではありません。mallocメモリの割り当てに使用した場合にのみ使用されますがmalloc、C++ ではあまり使用されません。new代わりに、オブジェクトを動的に割り当てるために使用する必要があります。で動的保存期間を持つオブジェクトを作成した場合はnew、 を使用deleteしてそれを破棄します。
xはスタック変数であり、リターン時に自動的に削除されdoSomething()ます。
手動で割り当てたオブジェクトのみをdにするmalloc()必要があります(C++ では非常にまれです)。また、C++ ではandをfree()使用しないでください。代わりにandを使用してください。free()malloc()newdelete
コードでメモリを割り当てた変数のみを解放する必要があります。あなたの例xでは、ローカルで宣言されており、プログラムはスタックにメモリを割り当てます。関数の最後で、変数は自動的に破棄されます。したがって、心配する必要はありません。