c++ class中成員函數,static變量在編譯時都不會被分配內存,只有實實在在的int,char,long,float,double等類型纔會被分配內存,並且以當前字節長度最大
的類型來成倍分配內存,而虛函數同理也不會被分配內存,無論聲明多少個虛函數都如此,但是類中會存放一個虛指針,指向虛函數表,該虛函數表存放在內存中,
跟類地址無關的一個地址中,所以在計算class的sizeof的時候,成員函數、static變量,虛函數都不會被計算大小,只會計算int,char,long,float,double等類型加虛指針
的大小,在32位機器中,指針大小4個字節,而在64位機器中,指針大小8個字節,但是int在32位和64位機器下都是4個字節大小,下面附常用數據類型及對應字節數
32位編譯器: 64位編譯器:
char :1個字節 1個字節
char*(即指針變量): 4個字節(32位的尋址空間是2^32, 即32個bit,也就是4個字節。同理64位編譯器)
8個字節
short int : 2個字節 2個字節
int: 4個字節 4個字節
unsigned int : 4個字節 4個字節
float: 4個字節 4個字節
double: 8個字節 8個字節
long: 4個字節 8個字節
long long: 8個字節 8個字節
unsigned long: 4個字節 8個字節
假若class爲空,則分配的字節大小爲1,表示該class的存在
C++的一些字節問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
結構體前向申明的小細節
fancycow
2020-07-07 06:03:08
shared_ptr線程安全性全面分析
AdolphLua
2020-06-16 05:54:51
ODBC-C語言操作數據庫(SQL Server 2000)(上)
1.SQLExecDirect直接執行SQL語句 SQLRETURN SQLExecDirect( SQLHSTMT hstmt,//SQL語句句柄
DeweyMao
2020-06-13 08:55:01
ODBC-C語言操作數據庫(SQL Server 2000)(下)
1.SQLBindParameter參數綁定 SQLRETURN SQLBindParameter( SQLHSTMT hstmt,//SQL語句句柄
DeweyMao
2020-06-13 08:54:50
高級串口編程, 使用 ioctl 和 select
tsinfeng
2020-06-09 23:44:56
scanf_s()讀入字符串和數字
Lmikic
2020-06-04 03:21:16
操作系統課程設計--簡單文件系統的實現
wanghaofeng
2020-05-02 21:59:15
找數問題和青蛙爬樓梯問題
fancycow
2020-02-26 00:11:04
從運算符優先級看指針數組和數組指針
AdolphLua
2020-02-23 14:48:01
談談C++中的swap函數
AdolphLua
2020-02-23 14:47:51
C++ typename的起源與用法
AdolphLua
2020-02-23 14:47:51
C++ namespace的應用
tsinfeng
2020-02-23 00:58:42