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?

下一篇: Why is there a limit on the stack size?