請告訴我,是否可以使用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. CUDA中可以使用的數組大小是否有限制?
- 2. 是否可以增加wordpress的最大上傳大小?
- 3. 是否有內置的方法來增加字體大小?
- 4. 使用realloc來增加數組的大小
- 5. 是否可以添加margin-bottom來擴大主體的大小?
- 6. Java增加數組大小
- 7. 是否可以在Dynamo DB中增加項目大小
- 8. 我可以增加靜態分配數組的大小嗎?
- 9. 是否可以使用數組列表來實現鏈表?
- 10. 我可以增加JPanel的大小嗎?
- 11. 是否有可能減小來自字節數組的圖像的大小
- 12. 將增加到malloc數組的值變成malloc數組中的所有值
- 13. 是否有函數來知道視圖的可用大小?
- 14. 如果數組的等級/大小可用,是否有任何理由使用假定大小的數組?
- 15. malloc和整數數組的realloc大小
- 16. 是否可以增加使用Javascript事件的textarea的行數?
- 17. 我需要增加可能的最大數組大小
- 18. 是否可以設置stl :: deque的內部數組的大小?
- 19. 是否有可能使用JavaScript來檢查圖片的大小加載
- 20. 我們是否可以增加模擬器的ROM大小以加載大型應用程序
- 21. 我們可以用我們可以malloc的大小來memset相同的大小嗎?
- 22. Redis - 數據大小是否可以大於內存大小?
- 23. 是否可以在C++中交換任意大小的數組?
- 24. Numpy:是否有數組大小限制?
- 25. serialize uid數字是否增加要發送的字節數組的大小?
- 26. 是否可以增加設置爲「固定驅動器」的VirtualBox的大小?
- 27. C動態改變使用malloc和memcpy的數組大小的大小
- 28. 保持增加數組大小C++
- 29. 在C++中增加數組大小
- 30. 如何動態增加數組大小
如同你自己:如果數組旁邊的空間已經分配給別的東西,怎麼會這樣呢? – 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