小编pep*_*320的帖子

为什么 std::vectors 不会作为数组从堆栈中销毁?

当我们这样使用数组和指针时:

int *g() {
  int arr[] = {1, 2, 3};
  return arr;
}

int f() {
  int *value = g();

  for (size_t i = 0; i < 3; i++) {
    std::cout << value[i] << " ";
  }
  std::cout << std::endl;
}

int main(int argc, const char **argv) {
  f();
  return 0;
}

Run Code Online (Sandbox Code Playgroud)

函数 g 返回后,它从堆栈中删除,因此我们在函数 f() 中得到段错误

但使用std::vector相同的逻辑没有任何问题:

std::vector<int> g() {
  std::vector<int> arr = {1, 2, 3};
  return arr;
}

int f() {
  std::vector<int> value = g();

  for …
Run Code Online (Sandbox Code Playgroud)

c++ arrays vector

4
推荐指数
1
解决办法
157
查看次数

标签 统计

arrays ×1

c++ ×1

vector ×1