Che*_*eta 4 heap callstack programming-languages
请向我解释在此代码中“x”是堆栈动态变量还是堆动态变量?如果是堆动态变量,那么为什么它不是堆栈动态变量?谢谢
function foo(){ MyClass x = new MyClass();}
Run Code Online (Sandbox Code Playgroud)
调用函数时,堆栈动态变量就存在了。它们存在于 C++ 运行时堆栈中,并且是临时的。它们要么在参数列表中,要么在函数内部声明(静态变量除外,它们不在堆栈上实例化)。这些变量在超出范围时会消失,并且运行时会回收它们内容的内存。
堆动态实例存在于运行时预留的另一个内存区域,称为“堆”。这些实例通过。“new”运算符,并且必须由“delete”运算符显式释放。
我希望这是有帮助的