[問題] 急問 關於記憶體 malloc

看板C_and_CPP作者 (搞笑藝鵝)時間16年前 (2009/10/27 22:59), 編輯推噓4(4014)
留言18則, 7人參與, 最新討論串1/2 (看更多)
遇到的問題: 最近寫了一隻 Server程式 在程式中我有宣告一個 int test [3][100] 還有兩個 char *temp [100],temp2 [100] 但不知道為什麼 有一個地方 我使用 temp [i] = malloc (100); 時 test 裡面的資料就會變成亂數 (原本有資料在) 去網路上查了大家都說靜動態等等的 但是我真的看不懂 所以想來請問版友們 qq 開發平台: Linux C 有問題的code: code 在學校電腦,可能要明天才有辦法附 不過它有點長,可能也不能全貼 補充說明:有點急,希望版友們可以幫幫忙 謝謝 -- Q麾Qζ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.241.114

10/27 23:01, , 1F
因為 i 大於或是等於 100 了
10/27 23:01, 1F

10/27 23:07, , 2F
所以使得它去搶 test 的空間嗎?
10/27 23:07, 2F

10/27 23:11, , 3F
我是猜測原因, 是不是這個 case 你要自己去驗證, 但如果 i
10/27 23:11, 3F

10/27 23:11, , 4F
真的超出範圍, 的確會把週圍的變數蓋掉, 如果 i 超過太多
10/27 23:11, 4F

10/27 23:12, , 5F
蓋到不允許蓋的地方, 程式還會掛掉
10/27 23:12, 5F

10/27 23:14, , 6F
好 我明天測測看 非常謝謝您
10/27 23:14, 6F

10/27 23:14, , 7F
如果其他版友有其他看法也請告訴我 謝謝 :)
10/27 23:14, 7F

10/27 23:16, , 8F
malloc完 轉個型吧...既然你可以過 應該compiler不抓吧?
10/27 23:16, 8F

10/27 23:19, , 9F
您的意思是 temp [i] = (char *) malloc (100) 嗎?
10/27 23:19, 9F

10/27 23:25, , 10F
喔對阿 因為malloc回傳是void* ....
10/27 23:25, 10F

10/27 23:43, , 11F
C 不抓 C++ 會抓...
10/27 23:43, 11F

10/28 00:10, , 12F
我原來的問題跟我在 fork 內執行有關係嗎?
10/28 00:10, 12F

10/28 00:10, , 13F
因為我 fork 蠻多次的 ○rz
10/28 00:10, 13F

10/28 09:54, , 14F
如果任何一次fork都會有問題理論上就和fork無關了@_@"
10/28 09:54, 14F

10/28 12:48, , 15F
使用結構來寫
10/28 12:48, 15F

10/28 12:49, , 16F
用list來寫
10/28 12:49, 16F

02/12 13:27, , 17F
char * temp = (char*) malloc( sizeof(char)*100 )
02/12 13:27, 17F

02/12 13:27, , 18F
總覺得哪裡怪怪的
02/12 13:27, 18F
文章代碼(AID): #1AvmheEi (C_and_CPP)
文章代碼(AID): #1AvmheEi (C_and_CPP)