簡體   English   中英

如何擴展動態分配的數組

[英]How to extend a dynamically allocated array

我正在編寫自己的數組類(如std::vector ),其主數據是指向數組開頭的指針。 在分配內存中的8個元素后,我想增大數組的大小。 有什么方法可以檢查數組末尾的內存是否可用? 如果是,我如何獲得? 謝謝。

您不能直接獲得與已分配的塊相鄰的新內存。 一切都是不透明的,由操作系統和應用程序RTL的內存管理器框架管理。

我看到2種可能的方法:

  • 使用new[]分配更大的塊,將現有數據復制到其中,然后使用delete []刪除原始塊。
  • 在內部緩沖區中使用C內存分配函數( malloc / calloc ),以便隨后可以使用realloc進行擴展。 但這可能會變得棘手,因為您沒有自動管理緩沖區中包含的對象的構造/破壞。

您有兩種可能:

  • new[]分配,通過將元素復制到分配有new[]的新數組進行擴展,並delete[]舊數組。 最后,完成delete[]一個delete[]

  • 使用std::malloc分配,使用std::realloc擴展,使用placement- new和顯式析構函數調用自己調用構造函數/析構函數,並使用std::free分配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM