変数がガベージコレクターによって要求されているかどうかを確認する方法はありC
ますか?つまり、以前に解放されているかどうかを確認します。C++
質問する
358 次
1 に答える
3
Cにはガベージコレクションはありません。標準では、そのような実装が可能であるといくつかの場所で言及されていますが。ただし、そのような実装が存在するかどうかはわかりません。
C / C ++では、オブジェクトがすでに削除されているかどうかを知る方法はありません。これは常に問題やエラーの原因です。それにもかかわらず、私たちはこれと一緒に暮らす必要があります。
この設計上の決定の主な理由-ポインターの単純さ。それは単なる住所であり、他には何もありません。それ以外の場合は、追加のオーバーヘッドが必要です。C ++のメモリが使用され、再利用されます。しばらくすると、2つの小さなオブジェクトの代わりに、これら2つのスペース全体をカバーする大きなオブジェクトが存在する可能性があります。これは、すべてのオブジェクトの前に何かを配置してチェックできるようにする方法がないことを意味します。シンプルさとスピード-これらはC/C++の重要な目標です。解放された/解放されていない/ポインタがわからないという問題は、優れたパフォーマンスの代償です。
于 2012-10-10T03:06:20.270 に答える