返回对指针的引用

时间:2018-02-25 17:36:50

标签: c++ c++11 reference

我正在查看关于返回对指针的引用的this链接。据此,我们必须返回对静态或全局变量的引用。我的问题是,如果我们使用new在函数内部创建内存块,为什么应用程序会崩溃,因为使用new分配的内存在删除之前是永久性的?我写了下面的代码来测试它,它崩溃了,如果我在函数内部使ptr静态,没有问题。

$query = "SELECT * FROM table WHERE name like '%variable name%' ";

1 个答案:

答案 0 :(得分:0)

将引用视为指针的语法糖是有用的。因此,让我们使用双指针重写您的函数,而不是对指针的引用:

int** returnPtrByRef(int numElements) {
  int *ptr = new int(numElements);
  return &ptr;
}

在这里,我们可以看到我们实际上是将指针指向堆栈分配的内存,该内存指向我们在堆上分配的内存。一旦函数返回,该堆栈就分配了内存(8个字节来保存指针),不再存在。