指针是否在堆栈或堆中保存动态变量?
- 论坛
- 指针是否在堆栈或堆中保存动态变量?
18 浏览
指针是否在堆栈或堆中保存动态变量?
我想把我发现大多数资料都很令人困惑的问题搞清楚。
例如,
int *a=new int;
\"a\"是在堆中还是栈中,\"*a\"又是什么情况?我发现很多资料只提到了堆,我真的需要一个非常具体的答案。我会非常感激的。
admin 更改状态以发布 2023年5月24日
匿名的
0 Comments
除了在stack
或heap
中的位置,您应该以C++的方式思考它,也就是通过考虑其存储期限来思考。例如,全局new
运算符可以被重载以执行任何操作。可能您得到的对象不在堆或栈上,而是在全局或某些特定设备内存中创建。
a
的存储期限为自动存储期。这意味着:
对象的存储空间在封闭代码块的开始时分配,并在结束时释放。
new int
创建的对象具有动态存储期:
通过使用动态内存分配函数,对象的存储空间会按请求分配和释放。