【发布时间】:2021-06-29 14:07:25
【问题描述】:
编写一个自定义向量类(底层结构是一个 c 风格的数组),我无法理解将一个数组的内容复制到另一个新数组(动态分配)然后删除之后的想法旧指针,只需将其重定向到新指针......这不会导致两个指针指向同一个数组吗?这如何被充分破坏?
这是我所指的 sn-p:
...
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 指针会发生什么?我知道我的旧指针现在指向新分配的内存(并且旧内存被“删除”),但肯定还有另一个指针仍然指向同一个新分配的内存?
【问题讨论】:
-
这个函数一结束新分配的数组是否会被破坏(函数,如push_back、insert等任何可能需要调整数组大小的函数)?
-
这个函数一结束,新分配的数组是否会被销毁
-
newarray 是一个局部变量,它在例程结束时消失,噗!它消失了。它指向的内容不受影响。
-
@stark ohhhhhhhhh 是的,谢谢让我的 a 和 b 有点困惑