C ++中的Oridinary(自动)变量使用堆栈还是堆?
可能重复:
什么和堆栈和堆在哪里?
一个不同的基本问题,请原谅我的无知。 请让我知道一个普通(自动非静态和非全局)变量的C ++中的简单变量声明,例如... float x; 在函数的范围内,说main()使用堆栈或堆(自由存储)内存? 我问这是因为下面给出的代码在C ++中工作,但不在C中。预先感谢。
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
if(a < b)
{
int c = 1925;
float d = 0.7;
}
else
{
double e = 889.7;
short f = 35;
}
return 0;
}
这些变量将在堆栈中创建,并在它们离开包含作用域时被销毁。 例如,当if语句终止时,c和d将不再可用,因为当它们碰到第一个大括号“}”时,它们已经超出范围。
这在C ++中起作用的原因,但不是C,不需要处理栈和堆的分配。 “using namespace std”和#include的iostream.h文件只存在于C ++标准模板库中! 请参阅http://www.cplusplus.com/reference/以查看C和C ++中可用的内容。
当您使用new运算符时,堆分配将起作用,该运算符将返回一个指向堆上新分配对象的指针,并且直到您显式调用指针上的delete时才会被销毁。
以您描述的方式声明的变量存储在堆栈中。
有关更多详细信息,请参阅此响应:堆栈和堆在哪里以及在哪里?
链接地址: http://www.djcxy.com/p/2269.html上一篇: Oridinary (automatic) variables in C++ use stack or heap?