作者uranusjr (←這人是超級笨蛋)
看板C_and_CPP
標題Re: [問題] 用指標建陣列的問題
時間Sun Mar 27 02:01:31 2011
※ 引述《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