[英]How to extend a dynamically allocated array
我正在編寫自己的數組類(如std::vector
),其主數據是指向數組開頭的指針。 在分配內存中的8個元素后,我想增大數組的大小。 有什么方法可以檢查數組末尾的內存是否可用? 如果是,我如何獲得? 謝謝。
您不能直接獲得與已分配的塊相鄰的新內存。 一切都是不透明的,由操作系統和應用程序RTL的內存管理器框架管理。
我看到2種可能的方法:
new[]
分配更大的塊,將現有數據復制到其中,然后使用delete []
刪除原始塊。 malloc
/ calloc
),以便隨后可以使用realloc
進行擴展。 但這可能會變得棘手,因為您沒有自動管理緩沖區中包含的對象的構造/破壞。 您有兩種可能:
用new[]
分配,通過將元素復制到分配有new[]
的新數組進行擴展,並delete[]
舊數組。 最后,完成delete[]
一個delete[]
。
使用std::malloc
分配,使用std::realloc
擴展,使用placement- new
和顯式析構函數調用自己調用構造函數/析構函數,並使用std::free
分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.