作者leondemon (狗狗)
看板C_and_CPP
標題[問題] 變數類型所需要的記憶體空間.....
時間Thu Jun 4 18:07:21 2009
想請問一下一個比較general的問題
在宣告變數時 一種變數型態(如int)會配置一個固定大小的空間給它
在看許多語言介紹書說 說這些空間的配置 會根據不同電腦而有不同的狀況
雖然我可以用printf("%d", sizeof(x)); 來得知x變數所佔的byte的大小
但是如果要將程式給其他電腦跑 我就不知道我原本的程式到別人的電腦能否執行
若是換一個電腦那還好 但如果是要開發給成千上萬客戶使用的軟體 那就必須嚴謹點
畢竟這個公司的形象 產品的形象有關...
因此想要問決定一個變數型態所佔記憶體空間大小的因素是什麼?
硬體(CPU? RAM?)還是軟體(OS? programming language?)
有辦法查詢嗎?
謝謝 :)
另外一問:Boolean值我用sizeof()去查 結果顯示佔1 byte
Boolean是真的佔「1 byte」 還是原本只佔「1 bit」但sizeof會視為1 byte?
記憶體位址都是用byte為單位嗎?所以記憶體最小使用單位為byte還是為bit?
又一問:電腦CPU說支援多少位元 或作業系統是幾位元的
會影響變數型態所佔記憶體大小嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.77.13
※ 編輯: leondemon 來自: 140.129.77.13 (06/04 18:11)
推 zlw:聽說C++跟C的規格文件裡面有提,就是ISO出的那些,沒仔細翻過 06/04 18:11
※ 編輯: leondemon 來自: 140.129.77.13 (06/04 18:13)
→ zlw:記憶體位址在計組教科書有提到所謂的byte addressing,似乎就 06/04 18:13
推 legnaleurc:#include <limits.h> 06/04 18:13
→ zlw:是指一個記憶體位址對應一個byte。 06/04 18:13
→ final01:你該修一下計組的 06/04 22:24
→ leondemon:謝謝大家回應 但第一個問題和最後一個問題我還是不知道 06/04 23:20
推 maxi326:沒記錯的話是compiler決定的,compiler depend on OS 06/04 23:27
→ maxi326:所以你說是OS決定也不算有錯 06/04 23:27
→ maxi326:Boolean是一個class而不是primitive type吧 06/04 23:27
→ maxi326:所以用sizeof(bool)看看,很少寫C++,或許我是錯的 06/04 23:28
→ maxi326:而且沒記錯的話,sizeof回傳的是number of bytes 06/04 23:30