簡體   English   中英

malloc 接觸未分配的內存

[英]malloc touching unallocated memory

我想知道為什么我的分配有效。 我創建了ptr ,它是一個指針, ptr2是與ptr位於同一位置的指針。

這是我的代碼:

int* ptr = malloc(sizeof(int));
int* ptr2 = ptr;
*ptr2 = 1;
ptr2 = ptr+1;
*ptr2 = 2;

最后,我有一個由兩個整數組成的數組:

ptr[0] = 1
ptr[1] = 2

我的問題是:為什么我可以在沒有錯誤或警告的情況下將值 2 影響到ptr2 我只對數組中的一個整數位置進行了malloc() -ed,不是嗎?

這里的問題是,通過說

  ptr2 = ptr+1;

你指的是內存溢出。 接下來在 deerencing 時,您調用undefined behavior 現在,無論如何都不能證明 UB 的結果是合理的。

C 中沒有任何固有的東西可以阻止您訪問越界(或無效)內存,但這樣做的結果是 UB。

也就是說,只是一個建議,在使用該指針之前,您應該始終檢查malloc()的返回值,以避免在malloc()失敗的情況下通過取消引用NULL指針來避免 UB。

暫無
暫無

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

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