c++裸指针作用域

C++ bare pointer scope

本文关键字:作用域 指针 c++      更新时间:2023-10-16

对于原始指针,如果我们不使用它来新的一些数据,那么它是可以让它保持原样,或者它是更好地设置为NULL在c++中?这个指针p本身(一个地址)的物理内存在函数process_data被调用后得到释放吗?

#include<vector>
void process_data(std::vector<double> & vec)
{
double *p;
p= vec.data();
// do something with p

// do we have to set p to NULL here? 
}

int main()
{
std::vector<double> vec(10);
process_data(vec);
return;
}

您不需要将p设置为nullptr (NULL)(或释放它),因为p不拥有它引用的内存。

pstd::vector的原始数组。std::vector会在销毁时清除内存。该内存的生存期是main (vec)的生存期。

p本身的堆栈分配内存(保存内存地址)将在函数返回后被清理;函数调用栈在函数调用完成后展开。