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()
new
delete
コードでメモリを割り当てた変数のみを解放する必要があります。あなたの例x
では、ローカルで宣言されており、プログラムはスタックにメモリを割り当てます。関数の最後で、変数は自動的に破棄されます。したがって、心配する必要はありません。