gpt4 book ai didi

c++ - 如何避免在 C++ 中重复删除变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:01 27 4
gpt4 key购买 nike

我已阅读 here ,以及其他地方,两次删除同一个变量可能是灾难性的(即使有多个变量名)。

假设我有一个接受输入和输出数组的函数:

void test(int*& input, int*& output) {
if(input[0] == 0) {
output = input;
}
}

它可能会分配一个指向我正在使用的另一个变量的指针:

int *input = new int[3];
int *output = new int[3];

input[0] = 0;

test(input, output);

delete[] input;
delete[] output;

如何避免重复删除?

在这个过于简化的场景中,我知道我可以检查指针地址以查看它们是否相等并有条件地只删除其中一个,但是当我不知道指针可能指向同一个时是否有更好的解决方案内存?

编辑:

整理东西以避免一些困惑..

最佳答案

避免双重删除的方法是设计您的代码,以便明确定义对象的所有权。一次只能有一个对象的所有者,尽管所有权可以从一个拥有实体传递给另一个实体。对象所有者可以是一段代码(例如函数)或数据结构。当所有者用完某个对象时,所有者有责任将所有权传递给其他对象或销毁该对象。

关于c++ - 如何避免在 C++ 中重复删除变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031400/

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