導航:首頁 > 源碼編譯 > 編譯器管理的存儲有哪些

編譯器管理的存儲有哪些

發布時間:2024-04-19 14:42:56

Ⅰ C語言中結構體在內存中的存儲方式

結構體在內存中的存儲方式,和常規的C語言變數、常量存儲方式類似,唯的不同在於對齊。


只所以要進行數據對齊是因為編譯器對結構的存儲的特殊處理能提高CPU存儲變數的速度,一般來說,32位的CPU內存以4位元組對齊,64位的CPU的以8位元組的對齊。一般可以使用#pragma pack()來指出對齊的位元組數。比如下面的代碼,在debug會顯示結構體test的內存大小為28,如果生成release版則所佔內存大小為32 。

#include<stdio.h>

#ifdef_DEBUG
#pragmapack(4)
structtest
{
charx[13];//13
intd;//4
doublef;//8
}ss;
#else
#pragmapack(8)
structtest
{
charx[13];//13
intd;//4
doublef;//8
}ss;
#endif

intmain(void){

printf("%d ",sizeof(ss));
return0;
}

Ⅱ C++程序運行過程中,各種類型的數據都是怎麼存儲的,主要存儲在哪些空間里

有5大存儲區域:
1:堆區 主要是用戶自己申請的內存,如new 運算符申請的內存空間
2:棧區 先進後出的存儲結構,局部變數,函數的調用,等
3:靜態存儲區 放局部,全局的靜態變數,和全局的變數 生命周期是整個應用程序
4:寄存器 系統調用
5:程序代碼區 你寫的代碼也需要放在內存中!

Ⅲ C51編譯器支持的存儲器類型有哪些

c51存儲器類型有bit
sbit
data
xdata
bdata
pdata
sfr
code等,可能不全面有遺漏
對應的物理存儲器是:
bit,即位數據:數據存儲器位定址區,即20h~2fh的范圍,共16個位元組,16*8=128個位,位地址00h~7fh,連續的。
sbit:特殊功能寄存器中的位數據:只有能夠被8整除的那些特殊功能寄存器中的各個位才能被稱為sbit,位地址80h~ffh,不連續的,間斷的。
data:數據區,對51為00h~7fh共128個位元組,對52為00h~ffh,共256個位元組,用mov定址,前128用直接定址或寄存器(r0~r7)定址,後128用r0、r1間接定址。
xdata:外部數據區,0000h~ffffh連續,用dptr間接定址(movx指令)
bdata:位定址去的位元組,20h~2fh
sfr:特殊功能寄存器(80h~ffh),直接定址
pdata:外部數據區,p2口保持數據,用r0r1間接定址(movx指令)
code:程序存儲器,用movc指令只讀

閱讀全文

與編譯器管理的存儲有哪些相關的資料

熱點內容
php訂單代碼 瀏覽:34
區域卷積神經網路Python 瀏覽:297
重生井岡山參加紅軍的小說 瀏覽:589
linux文件系統編程 瀏覽:876
懷孕神片 瀏覽:815
8排影院哪個位置好 瀏覽:906
程序員對鏈底端的影響 瀏覽:470
html5socketphp 瀏覽:86
excel怎樣編程 瀏覽:977
php正則不匹配 瀏覽:138
垃圾桶怎麼連接伺服器 瀏覽:665
21號染色體值演算法公式 瀏覽:248
傳入傳出的linux命令 瀏覽:535
罌粟電影劇情 瀏覽:840
龍口設計圖紙加密聯系方式 瀏覽:141
怎麼看加密狗是否到期 瀏覽:239
楚雄用什麼app做公交劃算 瀏覽:751
加密貨幣小韭菜 瀏覽:176
韓劇新建文件夾1的主要演員 瀏覽:378
三k線洗盤源碼大全 瀏覽:705