C++的一些字節問題

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的存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章