看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《jacky1989 (幻想的夢境)》之銘言: : a=(int *)malloc(sizeof(a)); : a[i]=rand()%223+123; 第 0 次 (i = 0) a ↓ ┌─┬─┬─┬─┬── │ │ │ │ │ ... └─┴─┴─┴─┴── a[0] ↓ ┌─┬─┬─┬─┬── │15│ │ │ │ ... 數字隨便填的 └─┴─┴─┴─┴── 第 1 次 (i = 1) a ↓ ┌─┬─┬─┬─┬── 其實並沒有保證連續 malloc 回傳的位址會連續 │15│ │ │ │ ... 不過為了解釋方便我們先這樣假設 └─┴─┴─┴─┴── a[1] ↓ ┌─┬─┬─┬─┬── │15│ │21│ │ ... !!?? └─┴─┴─┴─┴── 這時如果這個空間不是屬於程式的合法記憶體空間 作業系統就會判定你在亂搞, 然後把程式砍掉 你到第七次才失敗代表成功了六次, 已經不錯了...XD -- ╱ ̄ ̄ ̄╲ ▏◢█◣ 成龍表示: 是喔... ′/ ‵ ╰╯ ψQSWEET █◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146
jacky1989:高手~~ 03/27 02:09
james732:坦白說我看不懂這樣的說明....XD 03/27 02:11
jacky1989:不會阿!!我覺得寫的蠻好的耶,淺顯易懂 03/27 02:17
deh3215:樓上的意思是不能在迴圈裡宣告malloc吧 03/27 02:19
jacky1989:意思應該是用到才配置不一定會連續吧?如果不是Link list 03/27 02:21
jacky1989:所以有可能配置到不該使用的空間.... 03/27 02:21
deh3215:就是記憶體空間不是像堆疊一樣疊上去(LINK LIST較洽當) 03/27 02:23