簡體   English   中英

C ++:取消引用指針

[英]C++:Dereferencing a pointer

例如,考慮變量聲明: string* a ,如果我做std::cout << *a ,那么程序可能崩潰嗎? 我認為指針a指向的內存可能是錯誤的內存。 如果是,什么是“內存不足”

不一定會崩潰。 例如,指針引用的內存可能最終位於程序有權讀取的內存頁面中。 在這種情況下,該程序將無法直接通過崩潰段錯誤 ,這就是為什么稱它為“壞記憶”或“垃圾的記憶。” 根據空終止符的接近程度,最終可能會出現亂碼,但這基本上是未定義的行為。

is the program possible crash? ->是的,如果a不指向您的進程允許的內存,則應該進行段錯誤處理。

如果僅聲明指針而不進行初始化,則其地址可以包含任意值。 通常,這意味着它根本不是一個有效地址,或者它是您的程序不允許讀寫的地址。 嘗試取消引用此類指針可能是非法操作,因此通常您的程序將崩潰,並且操作系統將報告訪問沖突或類似情況。

從理論上講,指針也可能以程序可以訪問的有效地址結尾。 但是幾乎可以肯定它不會包含有意義的數據,因此您通過它訪問的任何內容都是胡說八道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM