我已阅读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;
如何避免双重删除?
在这个过于简化的场景中,我知道我可以检查指针地址以查看它们是否相等并且有条件地仅删除其中一个,但是当我不知道指针可能指向相同时,是否有更好的解决方案存储器?
修改
收拾东西以避免一些混乱。