malloc()配置問題 |
尚未結案
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
psl
一般會員 發表:6 回覆:30 積分:7 註冊:2003-06-11 發送簡訊給我 |
syao 你好
#include紅色的地方拿掉就可以了 char *ID = .... 所以 ID 的型態就是 char*, 不用再取址了 < > 關於指標剛開始都會有點搞不清楚 所以寫程式時後要注意 並多花點時間想想 慢慢的就會有感覺了 < > |
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
psl
一般會員 發表:6 回覆:30 積分:7 註冊:2003-06-11 發送簡訊給我 |
syao 你好: 你的第一個問題算是定義問題吧
"只有一個元素的陣列" 叫不叫陣列? 還是要兩個以上呢?
我覺得應該都可以 看你怎麼想囉 第二個問題
我覺得是配置 n bytes
所以 malloc(100) 應該是配置 100 Bytes
想想看 如果我寫 malloc(sizeof(int)*10)
因為 sizeof(int) = 4 佔 4 Bytes
4*10 等於 40 所以會配置 40 Bytes
剛好是可以放 10 個 int ...對吧 這從下面的程式碼可以看出來
Unit1.c.8: int *ip1 = malloc(2); 0040120D 6A02 push 0x02 0040120F E8D0040000 call malloc(unsigned int) 00401214 59 pop ecx 00401215 8945F8 mov [ebp-0x08],eax Unit1.c.10: int *ip2 = malloc(sizeof(int)*2); 00401218 6A08 push 0x08 0040121A E8C5040000 call malloc(unsigned int) 0040121F 59 pop ecx 00401220 8945F4 mov [ebp-0x0c],eax忘了說很重要的一點 動態配置的記憶體用完後要記得釋放掉 不然會有 memory leak 有借有還 發表人 - |
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
#include不過編譯出來好像有錯~~不知道是哪錯? 還有free()怎麼使用以這題為例的話? 1.char *name[10]; //是指標陣列10個元素每個元素資料型態都屬於char *這樣解釋對嗎??? 還有他算是有效記體體位置嗎??如果它是結構裡面資料成員要用malloc配置記憶體嗎? 2.(char*) name[10];//這樣變成陣列指標,指向含有10個char元素的陣列指標嗎?? 還有他算是有效記體體位置嗎??如果它是結構裡面資料成員要用malloc配置記憶體嗎? 發表人 - syao 於 2005/07/18 18:57:11 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
#include以上僅供示範,不含exception檢查~ ------------------- 學,然後知不足。 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |