Windows和Linux下的不同类型的大小

  • Windows
  • Linux
  • 指针
  • 其他
    • Win64
    • Win32
    • Linux64

  之前在书上看到long的大小是4字节,但在Linux下测了一下是8个字节,今天就完整地整理了一下Linux和Windows下不同类型的大小:

Windows

  不管是32位还是64位的Windows这几中常见类型的大小都是一样的:

size of int             4
size of long            4
size of short           2
size of long long       8
size of float           4
size of double          8
size of char            1
size of empty class     1

Linux

  64位的Linux这几中常见类型的大小:

size of int             4
size of long            8
size of short           2
size of long long       8
size of float           4
size of double          8
size of char            1
size of empty class     1

  在64位Linux和Windows下只有long的大小是不同的,64位Linux下long的大小为8字节,和long long一样,Windows下为4字节和int一样。但是在32位Linux下long的大小也仅有4字节。

  这里还要注意的一点是,空类的大小不是0而是1字节,因为不允许对象的大小为0,不同的对象必须要有不同的地址空间。

指针

  但是指针和以上的类型是不一样的,指针的大小是固定的不管指向哪一种类型,他不管在Linux还是Windows下大小都是一样的,仅在32位机器和64位机器上不同,在32位机器上为4 byte, 而64位机器上是8 byte。

其他

Win64

size of vector          32
size of set             24
size of pair            8
size of map             24
size of queue           40
size of string          40

Win32

size of vector          16
size of set             12
size of pair            8
size of map             12
size of queue           20
size of string          28

Linux64

size of vector          24
size of set             48
size of pair            8
size of map             48
size of queue           80
size of string          32

  有看到面经考到vector和pointer的大小,可以记一下vector在Win 64下32,Win 32是16,Linux是24;pointer在32和64位机器内分别是4和8。

  关于各类型大小的总结到此为止。

更多推荐

Windows和Linux下的不同类型的大小