A. c語言哪些占程序空間哪些占內存空間
一個由C/C++編譯的程序佔用的內存分別為以下四個部分:
程序代碼區:存放程序的二進制代碼。
靜態數據區:存放程序運行期間用到的數據。其存儲空間是在編譯時分配的,在整個程序執行期間靜態數據區中的數據一直存在,程序結束後由系統釋放。
動態內存區(也稱棧):也存放程序運行期間用到的數據,其存儲空間在程序運行期間由編譯器自動分配釋放,其生命周期短於程序的運行期。
堆區:由程序員分配釋放,若程序員不釋放,程序結束時可能由系統回收。
以上內容抄自課本《C語言與程序設計》(電子工業出版社)
B. C語言中128L與128所佔存儲空間的區別
在32位的編譯系統中他們兩個都是佔四個位元組的存儲空間。
如果是在16位的編譯系統中,他們所佔的存儲空間分別是4和2個位元組。
C. C語言中如何計算一個數組占內存多少空間
C語言中數組的sizeof值等於數組所佔用的內存位元組數。
C語言中有一個專門用於檢測類型或變數或數組在內存中所佔有的空間(位元組數)的操作符sizeof,用sizeof可以直接檢測出數組在內存佔有的位元組數。
語法規則是:sizeof(x); (識別沒有歧義時也可寫成sizeof x;)——其中x是類型名、變數名或數組名等,返回x所佔位元組數(int型)。
(3)c語言所佔存儲空間大小擴展閱讀:
sizeof的使用規則:
1、基本數據類型的sizeof:
這里的基本數據類型指short、int、long、float、double這樣的簡單內置數據類型,由於它們都是和系統相關的,所以在不同的系統下取值可能不同,這務必引起我們的注意,盡量不要在這方面給自己程序的移植造成麻煩。一般的,在32位編譯環境中,sizeof(int)的取值為4。
2、指針變數的sizeof:
指針變數的sizeof值與指針所指的對象沒有任何關系,正是由於所有的指針變數所佔內存大小相等,所以MFC消息處理函數使用兩個參數WPARAM、LPARAM就能傳遞各種復雜的消息結構(使用指向結構體的指針)。
D. c語言 結構體 共用體 占內存位元組
共用體:
sizeof(union
data1)的值為16.在編譯器默認設置的情況下,該共用體最大基本類型為double,它佔8位元組,所以此共用體以8來對齊。字元數組c2佔9個位元組,那麼整個共用體應該佔9個位元組,但按照對齊原則,實際分配給它的內存為16位元組。
結構體:
struct
data以8個位元組對齊,long類型的成員1分配8個位元組。s、i、c、a原本分別佔4、2、1、10個位元組。由於考慮到對齊,s分配4個位元組,i分配
2個位元組,c分配2個位元組,此時剛好用完8個位元組。a原本分配10個位元組,由於考慮到對齊,要使整個結構體所佔的存儲空間是8的倍數,所以分配給它16個位元組。因此結構體data佔8+4+4+2+16=32個位元組。