請告訴我,是否可以使用malloc來增加現有的數組的大小? (沒有分配一個新的數組,然後做memcpy)如果是,如何?是否可以使用malloc來增加現有數組的大小?
回答
請參閱realloc。請注意,它可能會更改數組的地址,因此請確保分配返回值。
如果無法調整數組大小,它可能會返回NULL,因此您要確保將返回值分配給* different *變量並測試NULL。 – 2012-02-20 19:53:14
確實。 'malloc'同樣適用 - 我想知道有多少程序檢查_that_的返回值。 – 2012-02-20 19:54:29
不,數組需要連續的內存,並且無法保證當前分配後的內存空閒。正如@James McLaughlin指出的那樣,你可以使用realloc來創建一個新的數組,然後做一個memcopy,但它本質上是一樣的。
看來,只有當內存對象的新大小需要移動對象時(例如,如果關閉內存字段已被某個程序佔用),它纔會和malloc + memcpy執行相同的操作。我使用小陣列(幾千字節),因此在大多數情況下,運動不是必需的。 – 2012-02-20 19:51:18
的確如此,但我正在處理您提到的具體問題,涉及增加陣列的大小,而不是簡單地將其分配到新的位置。 – mydogisbox 2012-02-20 19:52:38
如果你使用的是C++,那麼我會建議你簡單地使用stl向量(假設你沒有性能方面的考慮,這使得它不可行),因爲它以與realloc幾乎相同的方式處理你的調整大小。 – mydogisbox 2012-02-20 19:56:36
- 1. 使用realloc來增加數組的大小
- 2. 是否有內置的方法來增加字體大小?
- 3. 是否可以在Dynamo DB中增加項目大小
- 4. 我可以增加靜態分配數組的大小嗎?
- 5. 是否有可能減小來自字節數組的圖像的大小
- 6. 是否可以設置stl :: deque的內部數組的大小?
- 7. 我們是否可以增加模擬器的ROM大小以加載大型應用程序
- 8. 我們可以用我們可以malloc的大小來memset相同的大小嗎?
- 9. Redis - 數據大小是否可以大於內存大小?
- 10. 是否可以增加設置爲「固定驅動器」的VirtualBox的大小?
- 11. Numpy:是否有數組大小限制?
- 12. 在C++中增加數組大小
- 13. C動態改變使用malloc和memcpy的數組大小的大小
- 14. 在C++中增加數組的大小而不使用矢量
- 15. Laravel,是否可以刪除部分數組大小?
- 16. 使用malloc獲取模擬數組的大小
- 17. 增加數組大小時出現分段錯誤
- 18. 我們可以增加數據類型的大小嗎?
- 19. 是否可以調整Jlabel的大小?
- 20. 對於來自摘要的值,小數點可以增加嗎?
- 21. 增加大小
- 22. 使用size_t來獲取數組的大小。另外,我怎麼能動態分配內存使用malloc數組?
- 23. 具有不同大小的結構數組的malloc()結構
- 24. 是否可以在數組上使用const_cast來更改元素?
- 25. 通用(胖)庫是否增加應用程序包大小?
- 26. 零大小的malloc
- 27. 是否可以使用JavaScript獲取Flash視頻[YouTube]的大小?
- 28. 是否可以更改TListView組的字體大小?
- 29. 是否可以使用Javascript來加密/解密SQLite數據庫?
- 30. 是否有爲numpy數組定義的最大大小?
如同你自己:如果數組旁邊的空間已經分配給別的東西,怎麼會這樣呢? – delnan 2012-02-20 19:45:51
@delnan參見http://stackoverflow.com/a/9367362/901059我已經指出爲什麼這不起作用。 – mydogisbox 2012-02-20 20:03:42
@mydogisbox:我知道,因此我建議OP。 – delnan 2012-02-20 20:06:42