簡體   English   中英

能不能指向內存的指針是不是沒有分配?

[英]Pointer can point to memory are that is not allocated?

考慮以下代碼:

int *p;
p = malloc(1);//p can point to 1 byte memory area

為什么p可以指向許多如下所示的內存區域?

printf("%p %p %p %p %p",p,p+1,p+2,p+3,p+4);

情況p+1p+2等等,會導致未定義的行為 如該頁面所述,您的程序不符合 C 語言的規則,因此您可能獲得的任何行為都是毫無意義的。

C 不做任何內存地址檢查。 這是使 c 非常高效但也更難以編程的原因之一。 指針與其他任何變量一樣,只是一個變量,存儲二進制數據,並且僅通過預期數據是內存地址這一事實來區分。 指針算術在例如 c 數組的情況下是完全有效的。

您還可以設置一個指向隨機或任意值的指針。 但是,除非您如此設計,否則取消引用任何不是來自編譯器或 malloc 的地址將導致訪問您自己的某些程序內存空間或分段錯誤。

暫無
暫無

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

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