小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

程序中的數(shù)據(jù)在內(nèi)存中的布局

 SpringEmpire 2007-09-15

程序中的數(shù)據(jù)在內(nèi)存中的布局

.bss和.data段是專用來存儲全局變量的,在編譯其間分配地址空間。
.data包含靜態(tài)的己初始化的數(shù)據(jù),而.bss包含未初媽化的數(shù)據(jù)。
.text段包含程序指令和和很多只讀數(shù)據(jù)。

一個進程在內(nèi)存中的數(shù)據(jù)組織如下圖

+-------------------+  high address
|    env strings    |
+-------------------+
|    argv strings   |
+-------------------+
|    env pointers   |
+-------------------+
|    argv pointers  |
+-------------------+
|    argc           |
+-------------------+
|    stack          |
|      ^            |
|      |            |
|      |            |
|      v            |
|    heap           |
+-------------------+
|    .bss           |
+-------------------+
|    .data          |
+-------------------+
|    .text          |
+-------------------+  low address

1、stack

int func()
{
    int i = 0;
    ...
}

int main(int argc, char *argv[])
{
    int j;
}
i, j都存儲于stack中。

2、heap

int main()
{
    char *data = malloc(10);
    ...
}

data指向一個地址,該地址在heap中

3、.bss

char global;
int main()
{
    ...
}

int main()
{
   static int bss_var;
}

global和bss_var存放于.bss中,它們是未初始化的全局變量和靜態(tài)變量。

4、.data

char global = 'a';
int main(int argc, char *argv[])
{
    ...
}

int main(int argc, char *argv[])
{
    static char data_var = 'a';
}

global和data_var都存放在.data中。它們是已經(jīng)初始化的全局變量和靜態(tài)變量。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1785632


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多