C++:我需要释放函数内的指针吗?

Art*_*nce 0 c++ pointers

我需要释放ptr吗?如果是这样,怎么样?

#include <iostream>
using namespace std;

void printFromPtr(int *ptr);

int main()  
{   
  int a = 3;
  int numPrint = 10000;
  for (int i = 0; i < numPrint; i++)   
  {
    printFromPtr(&a);
  }   
}

void printFromPtr(int* ptr) 
{
  cout << *ptr << endl; 
}
Run Code Online (Sandbox Code Playgroud)

Rem*_*eau 11

没有.

该函数正在接收来自调用者的指针,并且不知道指向的内存是如何分配的,因此它没有尝试释放它的业务.只有调用者知道它是如何分配的,所以只有调用者知道如何释放它.

在此示例中,调用者将指针传递给a未动态分配的局部变量,因此无需手动释放.当变量超出范围时,变量将消失.