对于裸指针,如果我们不使用它来new一些数据,那么是可以保持原样还是在c++中设置为NULL更好?调用函数 process_data 后,指针 p 本身(地址)的物理内存是否被释放?
#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
不拥有它引用的内存。
p
指的是 std::vector
的原始数组。 std::vector
将在销毁时清理该内存。该内存的生命周期是 main
(vec
) 的持续时间。
p
本身的堆栈分配内存(保存内存地址)将在函数返回后清理;函数调用完成后,函数调用堆栈展开。
关于C++ 裸指针作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40618809/