小编The*_*ter的帖子

我可以强制std :: vector留下内存泄漏吗?

在向量超出范围后,是否可以强制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需要原始指针,并且实际上是有意的内存泄漏。但是,我仍然希望能够在构造数据本身时利用向量特征。

c++ swig

8
推荐指数
2
解决办法
486
查看次数

标签 统计

c++ ×1

swig ×1