連續定義三個動態數組,第一個的首地址是0x1C08,第二個的首地址是0x0000,第三個的首地址還是是0x0000,不知如何解決。不應該只能同時定義兩個動態數組吧,而且我申請的空間不是特別龐大。如蒙賜教,不勝感激。
1 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
malloc函數的實質體現在,它有一個將可用的內存塊連接為一個長長的列表的所謂空閑鏈表。調用malloc函數時,它沿連接表尋找一個大到足以滿足用戶請求所需要的內存塊。然后,將該內存塊一分為二(一塊的大小與用戶請求的大小相等,另一塊的大小就是剩下的字節)。接下來,將分配給用戶的那塊內存傳給用戶,并將剩下的那塊(如果有的話)返回到連接表上。調用free函數時,它將用戶釋放的內存塊連接到空閑鏈上。到最后,空閑鏈會被切成很多的小內存片段,如果這時用戶申請一個大的內存片段,那么空閑鏈上可能沒有可以滿足用戶要求的片段了。于是,malloc函數請求延時,并開始在空閑鏈上翻箱倒柜地檢查各內存片段,對它們進行整理,將相鄰的小空閑塊合并成較大的內存塊。
系統已經找不到合適的內存分配給你了