在向量超出范围后,是否可以强制std :: vector不释放其内存?
例如,如果我有
int* foo() {
std::vector<int> v(10,1); // trivial vector
return &v[0];
}
int main()
{
int* bar = foo();
std::cout << bar[5] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
不能保证这些值仍可在此处访问。
我目前正在这样做
int* foo() {
std::vector<int> v(10,1);
int* w = new int[10];
for (int i=0; i<10; i++) {
w[i] = v[i];
}
return w;
}
Run Code Online (Sandbox Code Playgroud)
但是重新填充一个全新的数组有点浪费。有没有办法强制std :: vector不删除其数组?
注意:我不返回向量本身,因为我使用SWIG将c ++与python接口,并且ARG_OUTVIEW_ARRAY需要原始指针,并且实际上是有意的内存泄漏。但是,我仍然希望能够在构造数据本身时利用向量特征。