c++裸指针作用域
C++ bare pointer scope
对于原始指针,如果我们不使用它来新的一些数据,那么它是可以让它保持原样,或者它是更好地设置为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
不拥有它引用的内存。
p
为std::vector
的原始数组。std::vector
会在销毁时清除内存。该内存的生存期是main
(vec
)的生存期。
p
本身的堆栈分配内存(保存内存地址)将在函数返回后被清理;函数调用栈在函数调用完成后展开。
相关文章:
- 全局作用域中函数指针的赋值
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 如何从类函数返回指向类作用域数组的指针?
- 块作用域中的函数指针定义
- c++ 指针在离开作用域后不会停留
- 混合指向已分配对象和作用域对象的指针
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 空的唯一指针在离开作用域时调用析构函数
- 使用作用域内生成的指针初始化静态成员
- 提升::进程间managed_shared_memory指针有效作用域
- 什么是C++中的作用域指针
- 在释放了所有作用域内指针之后仍然可访问内存
- C++指针到指针作用域的问题
- 模板类中静态函数或指针的作用域解析
- 有没有一种方法可以通过使用指针来处理作用域
- 关于 C++(或 C)中的指针的函数作用域
- Boost作用域指针指向Boost线程
- 当类没有析构函数时,智能指针或作用域指针会删除对象吗
- 如何在作用域指针类中正确使用动态分配的不透明指针
- 如何传递作用域指针而不是this指针