[問題] 關於malloc

看板C_and_CPP (C/C++)作者 (左)時間13年前 (2012/07/24 22:39), 編輯推噓3(3022)
留言25則, 9人參與, 最新討論串1/1
今天看到一隻程式有看到malloc 至於程式碼已經忘記了 但是想問 #include<stdio.h> #include<stdlib.h> int main() { int *i1,*i2,*i3; i1 = (int *)malloc(sizeof(int)); i2 = (int *)malloc(sizeof(i1)); i3 = (int *)malloc(sizeof(i1)); printf("%x\n",&i1); printf("%x\n",&i2); printf("%x\n",&i3); system("pause"); return 0; } 這裡執行完的結果是 0x28ff44 0x28ff40 0x28ff3c 那我想問當跟電腦要記憶體空間時 電腦一定會照著順序給嗎? 還是有可能突然給別的區段位址 那程式是在寫double的link list 因為我今天看到那程式似乎沒在意 這問題,純粹好奇問問 -- 這年頭沒真相沒得混 ORZ..... http://ppt.cc/S!iF -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.248.226

07/24 23:11, , 1F
有可能突然給其他區段的位置吧
07/24 23:11, 1F

07/24 23:12, , 2F
應該是有個分配空間的管理器,不夠它會再要
07/24 23:12, 2F

07/24 23:13, , 3F
小規模的索取與釋放則會被解決掉
07/24 23:13, 3F

07/24 23:14, , 4F
C++設計新思維裡面有教怎麼寫物件記憶體管理器
07/24 23:14, 4F

07/24 23:16, , 5F
但是我覺得編譯器做出的程式似乎就有內建這種效果
07/24 23:16, 5F

07/24 23:19, , 6F
作業系統決定,沒有什麼一定不一定,位置在哪都不重要
07/24 23:19, 6F

07/24 23:20, , 7F
&i1是怎麼回事,我快招架不住了
07/24 23:20, 7F

07/24 23:21, , 8F
難道沒有人發現bug
07/24 23:21, 8F

07/24 23:21, , 9F
從敘述上應該是想看 i1,i2,i3 才對,要查的是配出來的位置.
07/24 23:21, 9F

07/24 23:34, , 10F
我是想看i1 i2 i3 放在哪@@ 沒有要看他們指向哪
07/24 23:34, 10F

07/24 23:34, , 11F
難道不是用&i看嗎?
07/24 23:34, 11F

07/24 23:36, , 12F
直接顯示i1 i2 i3不是會顯示他們指向哪嗎 請高手指點
07/24 23:36, 12F

07/24 23:37, , 13F
用 &i 可以,但這份碼就沒malloc的必要。
07/24 23:37, 13F

07/24 23:41, , 14F
造成大家誤會真的很抱歉阿ORZ
07/24 23:41, 14F

07/25 00:04, , 15F
i1 i2 i3放在堆疊吧,堆疊由大到小
07/25 00:04, 15F

07/25 13:17, , 16F
因為&i 跟你要問的malloc 出來的位址 沒有關係 所以造成誤
07/25 13:17, 16F

07/25 13:17, , 17F
07/25 13:17, 17F

07/25 13:19, , 18F
換句話說,就算malloc 會給不同的區段 這程式print 出來
07/25 13:19, 18F

07/25 13:20, , 19F
的也還是會是照順序
07/25 13:20, 19F

07/26 01:52, , 20F
會連續接下去 但跳多少不太一定
07/26 01:52, 20F

07/26 16:41, , 21F
malloc需要free去釋放,上面說的c++記憶體管理的是用gcnew
07/26 16:41, 21F

07/26 16:42, , 22F
gcnew會把變數或指標堆疊到heap中,是專門給gcnew用的空間
07/26 16:42, 22F

07/26 20:29, , 23F
別把C++跟C++/CLI混為一談,特別是記憶體相關的事情...
07/26 20:29, 23F

07/26 22:37, , 24F
阿對齁,小地不才...忘記那是CLI!
07/26 22:37, 24F

07/26 22:39, , 25F
C++應該是用new才對,跟delete做呼應,拍謝拍謝:p
07/26 22:39, 25F
文章代碼(AID): #1G3hEp5o (C_and_CPP)
文章代碼(AID): #1G3hEp5o (C_and_CPP)