[問題] malloc 太大嗎?

看板C_and_CPP (C/C++)作者 (Dirk_AI(MIX))時間11年前 (2014/10/16 12:18), 11年前編輯推噓2(2011)
留言13則, 7人參與, 最新討論串1/1
各位大大好 小弟在;windows 使用Dev c++ 寫C遇到一個問題 配置動態二微陣列都會出錯 感覺是配製太大 所以當掉 unsigned long **horizontal; unsigned long i, j; horizontal=(unsigned long **)malloc(5*sizeof(unsigned long*)); for(i=0; i<5; i++) horizontal[i]=(unsigned long *)malloc(400*sizeof(unsigned long)); 如果改成300就沒問題 是不是因為unsigned long 所以爆掉了? 可是算一算 400*5 bytes 不是約2mb嗎? 為什麼會當? 或是我誤解甚麼了? 反過來配置就不會有問題 horizontal=(unsigned long **)malloc(400*sizeof(unsigned long*)); for(i=0; i<5; i++) horizontal[i]=(unsigned long *)malloc(5*sizeof(unsigned long)); 為什麼@@?? 有其他方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.164.168 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1413433100.A.223.html ※ 編輯: DirKai (140.117.164.168), 10/16/2014 12:19:47

10/16 12:21, , 1F
你在可以放5個指標的空間塞400個指標當然當
10/16 12:21, 1F

10/16 12:22, , 2F
300沒當只是剛好而已
10/16 12:22, 2F

10/16 12:22, , 3F
反過來400個指標的空間塞5個當然沒問題
10/16 12:22, 3F
不好意思大大 可以再跟我說清楚一點嗎 我不太懂 剛剛是我打錯了...

10/16 12:22, , 4F
上面for(i=0;i<5;i++) 就不會當了吧
10/16 12:22, 4F
我好像打錯了 上面應該是for(i=0;i<5;i++) 抱歉 我修正 不過我在原程式碼還是會當 開新的程式碼 只打這幾行更正後 的確不會當 ※ 編輯: DirKai (140.117.164.168), 10/16/2014 12:29:49 ※ 編輯: DirKai (140.117.164.168), 10/16/2014 12:30:46

10/16 14:59, , 5F
400x5約2MB?一個長度1K 全世界最大的unsigned long
10/16 14:59, 5F
阿...........2kb?

10/16 15:15, , 6F
malloc(5*sizeof(unsigned long*));改為unsigned long
10/16 15:15, 6F

10/16 15:16, , 7F
你的sizeof是求一個指向unsigned long型態指標的大小
10/16 15:16, 7F

10/16 15:18, , 8F
不對 我看錯了
10/16 15:18, 8F
那個 跟各位報告....我不知道怎麼弄好的 可是這幾行都沒變 我會來找找之前哪弄錯了 再回來跟各位報告..不好意思各位 不過 我剛剛上網查 這個方式造成很多記憶體碎片 有其他寫法 但看不大董 之後要再麻煩各位了>"< ※ 編輯: DirKai (140.117.164.168), 10/16/2014 16:52:48

10/16 16:55, , 9F
能貼完整的code更好
10/16 16:55, 9F

10/16 17:58, , 10F
通常這幾行沒動卻修好了都是因為其他地方有非法存取
10/16 17:58, 10F

10/16 17:59, , 11F
例如超過陣列邊界之類的未定義行為
10/16 17:59, 11F

10/16 18:01, , 12F
你的malloc沒有問題 錯的是你其他的code
10/16 18:01, 12F

10/16 18:02, , 13F
你都不使用中斷點去追踨code嗎??
10/16 18:02, 13F
我有 而且還把其他註解掉了 最後把這幾行貼去新的空白程式碼 也出錯... 現在好了=___=... ※ 編輯: DirKai (140.117.164.168), 10/16/2014 18:19:19
文章代碼(AID): #1KFqSC8Z (C_and_CPP)
文章代碼(AID): #1KFqSC8Z (C_and_CPP)