[英]C++:Dereferencing a pointer
例如,考慮變量聲明: string* a
,如果我做std::cout << *a
,那么程序可能崩潰嗎? 我認為指針a
指向的內存可能是錯誤的內存。 如果是,什么是“內存不足” ?
不一定會崩潰。 例如,指針引用的內存可能最終位於程序有權讀取的內存頁面中。 在這種情況下,該程序將無法直接通過崩潰段錯誤 ,這就是為什么稱它為“壞記憶”或“垃圾的記憶。” 根據空終止符的接近程度,最終可能會出現亂碼,但這基本上是未定義的行為。
is the program possible crash?
->是的,如果a不指向您的進程允許的內存,則應該進行段錯誤處理。
如果僅聲明指針而不進行初始化,則其地址可以包含任意值。 通常,這意味着它根本不是一個有效地址,或者它是您的程序不允許讀寫的地址。 嘗試取消引用此類指針可能是非法操作,因此通常您的程序將崩潰,並且操作系統將報告訪問沖突或類似情況。
從理論上講,指針也可能以程序可以訪問的有效地址結尾。 但是幾乎可以肯定它不會包含有意義的數據,因此您通過它訪問的任何內容都是胡說八道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.