我已閱讀here以及其他地方,刪除同一變量兩次可能是災難性的(即使有多個變量名稱)。如何避免C++中的雙重刪除變量?
假設我有一個函數,它接受一個輸入和輸出數組:
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;
如何避免的雙刪除?
在這個過於簡化的場景中,我知道我可以檢查指針地址以查看它們是否相等並有條件地只刪除其中的一個,但是當我不知道指針可能指向同樣的記憶?
編輯:
收拾了東西,以避免一些混亂..
*「我怎樣才能避免雙重刪除?」 *這不是表露無疑,所以不要看它是這樣 - [不使用'new'(http://stackoverflow.com/questions/ 6500313 /)。 –
並且不要使用'delete' –
你的代碼無論如何都沒有雙重刪除,'input'和'output'指向不同的緩衝區。 'test'中的相同名稱的局部變量不影響函數外部的變量。 –