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

編譯器管理的存儲有哪些

發布時間: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多長時間能學會 瀏覽:308
apex伺服器選什麼好 瀏覽:595
nds編譯 瀏覽:110
各個擊破法動態規劃法貪婪演算法 瀏覽:533
柱端部為什麼要加密 瀏覽:891
c單鏈表排序演算法 瀏覽:362
python鄰接鏈表 瀏覽:369
外國解壓的視頻說話助眠 瀏覽:115
查看php擴展版本 瀏覽:239
社保卡加密機放在信息中心 瀏覽:95
python3爬取網頁數據 瀏覽:621
超級主升幅圖公式源碼 瀏覽:22
2核2g伺服器有什麼用 瀏覽:494
cad命令欄怎麼顯示小黑 瀏覽:742
加密病毒數字幣 瀏覽:152
php讀取條碼 瀏覽:922
pdf字太小 瀏覽:765
單片機計算機教程 瀏覽:582
gh命令圖解 瀏覽:38
安卓還原網路設置會還原些什麼 瀏覽:432