数据模型LP32 ILP32 LP64 LLP64 ILP64

Posted SHAZI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据模型LP32 ILP32 LP64 LLP64 ILP64相关的知识,希望对你有一定的参考价值。

各个C++实现所选择采用的基础类型的大小统称为“数据模型”。有四种广泛采用的数据模型:

32 位系统:
  LP32 或 2/4/4(int 为 16-bit,long 和指针为 32 位)
    Win16 API
  ILP32 或 4/4/4(int,long 和指针都为 32 位)
    Win32 API
    Unix 和 Unix 类的系统(Linux,Mac OS X)

64 位系统:
  LLP64 或 4/4/8(int 和 long 为 32 位,指针为 64 位)
    Win64 API
  LP64 或 4/8/8(int 为 32 位,long 和指针为 64 位)
    Unix 和 Unix 类的系统(Linux,Mac OS X)

1 #include <iostream>
2 using namespace std;
3 int main() {
4     int* a;
5     cout<<sizeof(int)<<" ";
6     cout<<sizeof(long)<<" ";
7     cout<<sizeof(a)<<" ";
8     return 0;
9 }

 

以上是关于数据模型LP32 ILP32 LP64 LLP64 ILP64的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数据模型(字长模型)

Arm 32位程序向Arm 64位迁移

Arm 32位程序向Arm 64位迁移

Arm 32位程序向Arm 64位迁移

在ARM64下编程的常见陷阱:C语言常见陷阱

64位操作系统下,关于int和long占用字节数同为4问题