gpt4 book ai didi

C++ 裸指针作用域

转载 作者:行者123 更新时间:2023-11-27 23:58:50 24 4
gpt4 key购买 nike

对于裸指针,如果我们不使用它来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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com