变量的内存分配


#include <stdio.h>

int main()
{
    static int a = 0;
    int b = 0;
    return 0;
}

如在例子中的变量内存,请问是在编译时分配的还是在运行时分配的?


编译时分配的空间,这个static int a会占用最终可执行文件的静态区。
运行的时候,操作系统直接分配内存把整个可执行文件载入内存,a直接就获得内存空间了。


static变量是编译时初始化,运行是分配内存。初始化的局部变量是编译时初始化,运行时分配内存;未初始化的局部变量会被忽略。编译好的可执行映像,static变量应该存在data段,初始化的局部变量应该是bss段。运行之后,static变量被分配到常量存储区,初始化的局部变量分配到栈上。


运行呀。。编译是编译成二进制文件而已。。


都是编译时分配,static在静态区,而a在栈中。



相关阅读:
ionic2 创建项目 ionic server 报这个错 有朋友可以帮忙看看吗!
微信小程序 swiper组件无法滑动,但是可以自动切换?
想写个博客,却找不到适合的主题
如何更改cxf webService端口号?
uuid 有什么用?
vue组件内应该新建vue对象吗
aria2提示不支持https
js中如何将json数组转换为tree结构对象?
javascript Image的onload 方法的使用
关于多个页面css样式表问题
androidstudio Execution failed for task
app首页接口需要好多数据,数据要统计许多表的数据,有什么简化方法么?
数据库字段设计了不能为空 还是插入了数据 大神帮我看看为什么?
为什么video标签获取到的对象vedio对象的duration是NAN
关于JS的事件队列问题
bootsrap页面布局需, 横向滚动条显示多个,固定左侧表头
build opencv.sln出错
如何去掉百度地图api中的建筑物名称
一个页面调用同一个modal,返回值问题。
libpython2.7.so是个什么?为什么我用virtualenv创建了新的env之后,这个文件没有多一个?



快速导航

Copyright © 2016 phpStudy |