memory-management - Windows 10 address space - C++プログラマーが「new」の使用を最小限にすべき理由は?

microsoft c++ コーディング規約 / c++ / heap / new-operator / c++-faq

私がつまずいスタックオーバーフロー質問のstd ::リスト<はstd :: string>を使用したときのstd ::文字列を使用してメモリリーク、およびコメントの一つは、この言います:

Arsen Khachaturyan



Answer #1

まず、C++はガベージコレクションされません。そのため、newには必ず対応するdeleteが必要です。もし、このdeleteを入れなかった場合、メモリリークが発生します。さて、次のような簡単なケースの場合。

std::string *someString = new std::string(...);
//何かをする
delete someString;

あるいは、このようにすることもできます。

std::string someString(...);
//何かをする
std::string someString(...);
std::string otherString;
otherString = someString;
someString += "More text.";
if(otherString == someString) { /*ここに来ることはない */ }