我正在使用64位ubuntu机器(x86_64)。
我的老大已经告诉过,在C程序中任何指针的大小总是等于int的大小。 这是对的吗 ?
但是当我执行sizeof(int)我得到4个字节和sizeof(int*)我得到8。
1.为什么我在x86_64中获得sizeof(int) 4个字节?
是否可以让我的应用程序显示一个时间,而不pipe系统时间是否被修改
如何在没有SPL的情况下从uboot直接启动saber sd
内核抢占同时持有自旋锁
mmap:无法分配内存
谁安排线程?
我的老大已经告诉过,在C程序中任何指针的大小总是等于int的大小。 这是对的吗?不,这是不正确的 。有多种不同的内存模型可能 ,通常在同一个系统上同时进行。 通常系统支持同时运行ILP32和LP64进程。 在ILP32和LP64中, int是4个字节(32位),LP64中的指针是8个字节(64位)。不,这是不正确的。你的“老人”是错的。 你的编译器是正确的(显然)。一个int的大小和一个指针的大小在不同平台上是不同的,它们不一定是相同的。 事实上,在现代的64位用户硬件上,你可能会发现32位的int和64位的指针。没有要求指针总是与int相同的大小。 实际上,指向不同类型的指针不一定是相同的大小:在线C 2011标准6.2.5类型…28指向void的指针与指向字符类型的指针具有相同的表示和对齐要求。 同样,指向兼容类型的合格或不合格版本的指针应具有相同的表示和对齐要求。 所有指向结构类型的指针应该具有相同的表示和对齐要求。 所有指向联合类型的指针应具有相同的表示和对齐要求。 指向其他类型的指针不需要具有相同的表示或对齐要求。48)相同的表示和对齐要求旨在将可互换性作为参数,从函数返回值以及联合成员。对于C ++,请参见在线C ++标准 ,第3.9.2节,第3段。在32位机器上,指针类型和int的大小是相同的,但这并不普遍(特别是当我们转向64位体系结构时)。可以存放指针的整数类型是intptr_t ,在<stdint.h>定义。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。