gpt4 book ai didi

c++ - 安全移动 C++ 对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:52 26 4
gpt4 key购买 nike

我听说过一些警告不要通过memcpy将对象传送到另一个内存位置,但我不知 Prop 体原因。除非它包含的成员根据内存位置做一些棘手的事情,否则这应该是绝对安全的……或者不是?

编辑:预期的用例是一个像vector这样的数据结构,它在连续的内存块(即数组)中存储对象(不是对象的指针) ).要在第 n 个位置插入新对象,需要移动从位置 n 开始的所有对象,以便为要插入的对象腾出空间。

最佳答案

你不应该这样做的一个主要原因是析构函数。当您将 C++ 对象 memcpy 到内存中的另一个位置时,您最终会在内存中得到该对象的 2 个版本,其中只运行了 1 个构造函数。这将破坏几乎每个 C++ 类的资源释放逻辑。

关于c++ - 安全移动 C++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com