假設我們有下面的代碼片段內存addressation - 零值
int* p = new int[5];
,我們的代碼是在保護模式下運行。因此,位於我們的p
變量中的地址不是物理地址,而是僅分配給我們應用程序的虛擬內存部分的地址。當然,我們的系統還可以防止內存違規嘗試。
在這些情況下,是否可以給一個「零」地址,所以我們將有p = 0
,這將是正確的?當然,我正在考慮將0
的值視爲nullptr
,因此如果此地址是正確的,則可能會產生誤導。
事實上,是否有任何規則告訴我們什麼是合法的可尋址範圍?
當然還有另外一個原因沒有被賦予這個值,但我不知道我是否正確 - 在C(C++)中,指向零值的指針被特殊處理,所以我們如何注意到如果我們的指針指向已分配的內存,或者它的值爲零,因爲它是nullptr
?
這裏真正的問題是什麼,你是否可以相信'p == 0'意味着分配失敗? –
是的,其實我的問題的一部分是「你是否可以相信'p == 0'意味着分配失敗?」。 –