局部变量是在程序运行时候动态给他分配空间吗

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:41:40

要看你怎么声明的变量。
new 是在动态在堆上分配的。
自动变量也就是局部变量是分配在栈上,不是动态的。

来给你解释下:
变量的存储方式分为静态存储和动态存储.
1.静态存储方式:在定义变量的时候系统内存自动的的给他分配空间(包括静态变量即全局变量);

2.动态存储方式:在定义变量的时候,系统没用为其分配存储单元,当使用的时候才临时的分配(包括自动变量和,寄存变量),使用完后就自动释放.

而局部变量就属于自动变量,特别注意,虽然是这样,但当你把变量定义为静态的局部变量类型的时候,虽然他仍然是局部变量他的作用范围也没变,而你使用静态局部变量过后,他并不会立即释放会等到总程序结束后才释放,同时他在他的范围内再次使用他的时候,他会保持次的值(运算过后的值,有可能不和他的初始值一样).

new 是在动态在堆上分配的。
自动变量也就是局部变量是分配在栈上,也算是动态的分配,调用完后就没有占用内存了,只有再调用函数时候才分配内存