int *a;
if (true)
*a = 2;
else
*a = 3;
如您所見,a不是動態分配的指標。我應該nullptr在退出前分配給它嗎?是否unique_ptr自動為我做?指向 by 的記憶體指標a呢?如果a在超出范圍之前我為 null ,是否會導致記憶體泄漏?
uj5u.com熱心網友回復:
int *a; if (true) *a = 2;
該程式的行為未定義。a沒有有效的指標值,因此您可能無法間接通過。
我們應該在使用后將每個原始指標設為 NULL 嗎?
這取決于。例如,如果指標的生命周期即將結束,則將其分配為 null 是多余的。
unique_ptr 會自動為我做嗎?
unique_ptr 不是原始指標。
但是不,unique_ptr 無法知道您是否已停止使用它,因此當您停止使用它時,它無法將自身設定為 null。
如果我在 a 超出范圍之前將其設為 null,是否會導致記憶體泄漏?
將指標設定為空與在指標超出范圍之前不將其設定為空之間沒有區別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389142.html
上一篇:掃描字串的功能-有什么問題?
