我正在深入研究一些最初在C ++ Builder 6中构建的古代代码。整个代码库中存在以下模式,恕我直言,它应该如下所示:
vector<int> x;
try {
... some run of the mill vector manipulation
} __finally {
delete &x;
}
delete &x;
真的很奇怪。据我了解,vector<int>
只会在其所包含的函数的生命周期内存在,因此无需在其上调用delete
。
这种模式背后是否存在一些合理的动机,还是只是一般的错误?
答案 0 :(得分:4)
它肯定不是标准的C ++。
只有在使用delete
时才能使用new
。否则行为未定义。
答案 1 :(得分:2)
至少正如你在这里所展示的那样,这是完全错误的。