簡體   English   中英

將 c 樣式數組復制到新的 memory

[英]copying a c-style array to new memory

編寫一個自定義向量 class (底層結構是一個 c 樣式的數組),我無法理解將數組的內容復制到另一個新數組(動態分配)然后刪除舊指針之后的想法,只需將其重定向到新指針......這不會導致兩個指針指向同一個數組嗎? 這如何得到充分破壞?

這是我所指的片段:

...
value_type* newarray = new value_type[new_capacity];
    for (size_t i{0}; i < size; ++i)
      newarray[i] = oldarray[i];
    delete[] oldarray; //makes sense
    oldarray = newarray; //so I've copied the starting address of the array to another address in memory?
    capacity = new_capacity;
 ...

那么 newarray 指針會發生什么? 我知道我的舊指針現在指向新分配的 memory(並且舊的 memory 已“刪除”)但肯定還有另一個指針仍然指向同一個新分配的 ZCD69B4957F06CD8198D7BFDE?3

變量newarray是本地創建的指針變量。 這只是意味着在堆棧上保留了一個名為“newarray”的位置來存儲newarray指向的地址。

在 function 結束時,它將從 scope 中取出 go 及其 ZCD69B4957F068818D7BD3 將被回收它指向的 object 不受影響。

只要它們指向的 object恰好被刪除一次,您有多少個指向同一個 object 的指針沒有區別。

暫無
暫無

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

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