变量分配内存的时机
有下面这样一句话,大家看看有没有问题
很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。
我知道
外部变量就是别的文件中定义的全局变量,全局变量在程序编译时已经完成赋值.
那么
完成编译时都完成赋值了,还可能没有分配空间吗?
在vs2008试了一下申请一个全局变量,刚进入main函数这个全局变量就有值,能取到地址。
Linux下也是一样。 全局变量 分配内存
[解决办法]
"很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化"这个使用是指变量区别于定义的时候分配空间和使用时分配空间,使用不是指运行
[解决办法]
C,C++全局变量和静态变量,是在程序加载的时候分配空间的。
C全局变量和静态变量,是在程序加载的时候初始化的。
C++,全局变量,有些加载时候,有些是在程序初始化的时候。
C++静态变量,有些程序加载的时候分配空间的,有些是在程序初始化的时候,有些---函数作用域静态函数---可能是在函数的第一次调用的时候,初始化的,
而 函数参数是在,参数传递时定义空间和初始化的。
函数的局部自动变量和寄存器变量,是在函数的运行时,分配空间和初始化的,
自动变量的相对位置(相对偏移量),是在编译时确定的,寄存器变量是存储在那个寄存器中,还是当作自动变量处理,也是编译时就决定了的。