首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么时候sizeof(int)在Objective-C中不是4个字节?

当sizeof(int)在Objective-C中不是4个字节时,通常是在特定的硬件架构或操作系统上。Objective-C是一种编程语言,它是C语言的扩展,用于开发苹果平台的应用程序。在Objective-C中,sizeof(int)的大小取决于底层硬件架构和操作系统的实现。

在32位的系统上,sizeof(int)通常是4个字节。而在64位的系统上,sizeof(int)可能会是4个字节,也可能是8个字节,具体取决于编译器的实现。在苹果的64位系统上,sizeof(int)通常是4个字节,而在其他系统上,可能会是8个字节。

在Objective-C中,如果需要确保整数类型的大小,可以使用固定大小的整数类型,如int32_t、int64_t等。这些类型在stdint.h头文件中定义,可以确保在任何平台上都具有相同的大小。

总之,sizeof(int)在Objective-C中不是4个字节的情况,通常是由于特定的硬件架构或操作系统实现导致的。如果需要确保整数类型的大小,可以使用固定大小的整数类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 一个NSObject对象占用多少个字节

    Objective-C,我们可以通过一些方法来获取一个NSObject对象占用多少字节 代码获取NSObject实例对象的成员变量字节大小 * 获取一个NSObject实例对象的成员变量所占用的字节大小...注意 Copy items if needed 不勾选 // 然后Build Phases删除main-arm64.cpp编译选项(选中文件点减号或按delete键)...16; return size; } CoreFoundation框架里的硬性规定,内存对齐,小于16就会设置为16 用Xcode打断点看内存结构 打上断点 image.png Xcode...答案是,都是16 大概的内存结构图 image.png 有内存对齐的原因,结构体的大小必须是最大成员大小(16)的倍数 Objective-C不同数据类型占用字节大小 可以通过sizeof来获取不同数据类型占用字节大小...sizeof其实不是一个函数,仅仅只是一个操作运算符罢了,编译时就确定了的 类型 32位机器 64位机器 BOOL 1 1 bool 1 1 int 4 4 short 2 2 long

    67484

    NSObject对象占用多少个字节

    Objective-C,我们可以通过一些方法来获取一个NSObject对象占用多少字节 代码获取NSObject实例对象的成员变量字节大小 * 获取一个NSObject实例对象的成员变量所占用的字节大小...注意 Copy items if needed 不勾选 // 然后Build Phases删除main-arm64.cpp编译选项(选中文件点减号或按delete键)...16; return size; } CoreFoundation框架里的硬性规定,内存对齐,小于16就会设置为16 用Xcode打断点看内存结构 打上断点 image.png Xcode...答案是,都是16 大概的内存结构图 image.png 有内存对齐的原因,结构体的大小必须是最大成员大小(16)的倍数 Objective-C不同数据类型占用字节大小 可以通过sizeof来获取不同数据类型占用字节大小...sizeof其实不是一个函数,仅仅只是一个操作运算符罢了,编译时就确定了的 类型 32位机器 64位机器 BOOL 1 1 bool 1 1 int 4 4 short 2 2 long

    66930

    【C语言】指针总结(完结篇)

    sizeof 只关注占用内存空间的大小,不在乎内存存放什么数据。 1.2 strlen strlen 是C语言库函数,功能是求字符串长度。...函数原型如下: size_t strlen ( const char * str ); 统计的是从 strlen 函数的参数 str 这个地址开始向后, \0 之前字符串字符的个数。...\n",sizeof(&a[0]+1)); 这里面元素都是int类型,一个元素大小4个字节 我们先看第一个,sizeof(a)代表什么意思那,a是数组名sizeof里只有一个数组名,此时a代表整个元素...),此时不仅仅是数组名一个单独sizeof里,所以这里的arr代表数组首元素的地址,那解引用就是首元素大小,所以此时sizeof大小为1个字节 sizeof(arr【1】),此时不仅仅是数组名一个单独...int*指针,所以再减一,减的是整形大小,相当于现在指向的是第5个元素,再解引用就是第五个元素,所以第二个答案为5 3.2 题目2 //X86环境下 //假设结构体的⼤⼩是20个字节 //程序输出的结果是啥

    5410

    《Objective-C-高级编程》干货三部曲(二):Blocks篇

    先看一下本文结构(Blocks部分): 需要先知道的 Objective-C 转 C++的方法 因为需要看Block操作的C++源码,所以需要知道转换的方法,自己转过来看一看: OC源文件block.m...我的思考是:既然我们无法Block改变外部变量的值,所以也就没有必要在Block内部改变变量的值了,因为Block内部和外部的变量实际上是两种不同的存在:前者是Block内部结构体的一个成员变量,后者是栈区里的临时变量...*static_val;//是指针,不是值 __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int *_static_val...这两个函数调用的时机是什么时候呢?...Block时 什么时候Block被废弃呢?

    1K10

    【Golang】深究字符串——从byte rune string到Unicode与UTF-8

    为此,Go代码引入了一个新术语,称为 rune。...虽有unicode对应,肯定是该多少字节就存多少字节,而不是每个字符都存相同大小字节,毕竟unicode有100多万,全存相同大小字节,肯定浪费空间。...但是就有了最终要解决的问题:什么时候该读3个字节以表示1个字符,什么时候该读1个字节以表示字符?...UTF-8就是存储Unicode的方式,但不是唯一的,其他utf-16,utf-32交给童鞋们自己探索,我们主要深究一下utf-8。来看下UTF-8是如何解决上面的问题: 什么时候读1个字节的字符?...字节的第一位为0,后面7位为符号的unicode码。所以这样看,英语字母的utf-8和ascii一致。 什么时候读多个字节的字符?

    2.4K10

    iOS - 聊聊 autorelease 和 @autoreleasepool

    Objective-C 语言本身是支持 GC 机制的,但有平台局限性,仅限于 MacOS 开发,iOS 开发用的是 RC 机制。...begin的地址为:Page自己的地址+Page对象的大小56个字节; end的地址为:Page自己的地址+4096个字节; empty判断Page是否为空的条件是next地址是不是等于begin; full...那么iOS工程,方法里的autorelease对象是什么时候释放的呢?有系统干预释放和手动干预释放两种情况。...《Objective-C 高级编程:iOS 与 OS X 多线程和内存管理》 书中是说:ARC下,编译器会检查方法名是否以alloc/new/copy/mutableCopy开始,如果不是则自动将返回值的对象注册到...Q:ARC 环境下,autorelease 对象什么时候释放? 回到我们最初的面试题,ARC环境下,autorelease对象什么时候释放?我们就分系统干预释放和手动干预释放两种情况回答。

    2.4K52

    一、c++中经常被面试官面试的小问题总结(本篇偏向基础知识)

    2.const对象的值不能被修改,const成员函数修改const对象数据成员的值是语法错误   3.const函数调用非const成员函数是语法错误   任何不会修改数据成员的函数都应该声明为...所以看完上面这句话就应该明白了函数定义后加const的用处,以及什么时候用到const,这会是一个好的编程习惯的。...很多人都是直接相加求值,但是sizeof对类以及结构体作用时会有一个字节对齐机制, 对齐机制的对齐方式为其最大成员对齐方式,会将定义变量的内存补全,方便系统运算。...c1的偏移量为0,i的偏移量为4,c1与i之间便需要3个字节填充。 c2的偏移量为8,那么结果就是1+3+4+1=9,由于这里最宽的字节int,4个字节。补全之后答案为12....1、内联函数在编译时展开,宏预编译时展开。 2、在编译的时候,内联函数可以被镶嵌到代码,而宏只是一个简单的文本替换。 3、宏不是函数,inline是函数。

    94630

    【C语言】手把手带你拿捏指针(完)(指针笔试、面试题解析)

    数组存放的是一个字符串,虽然看不出来有没有\0,但是实际上字符串末尾会默认添加一个\0,所以实际上arr2数组存放的就是abc\0,然后strlen就可以正常帮我们计算字符串字符的个数3    接下来我们来看看后面的两个...sizeof,我们上面已经提到了数组arr1和数组arr2的区别,就是一个后面没有\0,一个有\0,所以计算大小时,\0会被算上,所以sizeof(arr1)结果为3,sizeof(arr2)结果为4...,但是这里*arr却是拿到了一个字符a,而不是一个地址,我们讲过字符存储时是存储的是它的ascll码值,所以这里strlen会把a的ascll码值97当作一个地址,但是97这个编号的地址可能不属于该程序...arr[0]+1)); (1)由于字符串默认会包含一个\0,所以我们计算整个数组大小时,需要把它也算上,所以大小就是7个字节 (2)这里算的是数组arr首元素地址的大小,为4或8个字节 (3)这里算的是数组...很明显不是,因为如果是这样应该使用大括号{},而不是小括号()    那它是什么呢?

    9410

    译文: 低调奢华有内涵的「Runtime」

    当然,我是翻译了这篇文章,但是对Runtime的理解,还是很基础——主要是还没有太多实践,真实开发几乎也用不到,一如文章所说:「如果可以,避免使用Objective-C的Runtime……」。...最主要的,就是看方法的调用(什么时候、由谁决定、执行哪段代码,什么时候方法会被执行),还有类型绑定(什么时候决定一个变量会有什么类型)。...听起来很恐怖,不过不是说不要用Runtime了。某位大神曾经讲过:「能力越大,责任越大」。而我们November Five(译者:一家公司名)也一直尝试使用各种强悍的工具,让事情变得更美好。...节假日期间,我们通常每周会提交多个节日版本,很明显耐心等待人家修复这个问题并不是一种很好的选择。...:(SEL)sel方法动态地添加方法实现)。

    97140

    Socket编程---UDP篇

    因此,如果一个数据包在传输丢失或损坏,UDP 不会重传数据,接收方也无法得知数据包的丢失。 但是,并不是说,TCP就是百利而无一害的。...前面说了,TCP还有一个特性---面向字节流,这就导致了,目标主机读取到的内容可能并不是完整的源主机发送的内容。后续讲TCP实现的时候会体现出来。 二....返回值说明: 成功实际写入的字节数会被返回,失败-1会被返回,错误码会被设置。 三. 服务端实现 我们将服务端封装成一个类,并封装对应步骤类函数。...那什么时候绑定呢? 客户端首次发送消息数据的时候,操作系统会给客户端随机分配端口号,以防端口冲突。...防止client port冲突 //b.什么时候bind?

    21710

    iOS BAT面试对答题

    对博主这种菜鸟而言,Runtime 实际开发,其实就是一组C语言的函数。 2.objc向一个对象发送消息时,发生了什么?...objc向一个对象发送消息时,runtime会根据对象的isa指针找到该对象实际所属的类,然后该类的方法列表以及其父类方法列表寻找方法运行,如果一直到根类还没找到,转向拦截调用,走消息转发机制,...objc编译时,[obj foo] 会被转意为:objc_msgSend(obj, @selector(foo));。 5.什么时候会报unrecognized selector的异常?...objc向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后该类的方法列表以及其父类方法列表寻找方法运行,如果,最顶层的父类依然找不到相应的方法时,会进入消息转发阶段...54, 76, 45, 5, 63}; int num = sizeof(array)/sizeof(int); for(int i = 0; i < num-1; i++) { for(int j =

    94200

    HotSpot JVMKlassoopDescoop的作用与关系

    这里需要特殊指出的是,int[]数组Java内部其实也是一个Java对象,所以int[][].class对应的Klass是ObjArrayKlass,而不是TypeArrayKlass。...oopDesc的子类,arrayOopDesc代表的是数组类型的对象,InstanceOopDesc代表的是普通Java类的对象,markOopDesc并不是代表一个Java对象,它只是因为历史原因被放到了这个继承关系里...ArrayKlass的计算规则大体上是 sizeof(arrayOopDesc) + sizeof(int) 用来存放数组长度 + 要分配的数组长度 * 数组元素所占内存大小。...那什么时候需要创建它呢? 类被加载或定义的时候,也就是创建Klass对象的时候。 那既然已经有Klass对象了,为什么还要创建个java.lang.Class类型的Java对象呢?...,作为该Java类Java程序内的代表(该对象会被保存在Klass对象的_java_mirror字段)。

    64720

    自定义类型详解

    后面再进行讲解 因此,结构体,结构体的自引用不是结构体里面包含同类型的结构体变量,而是包含同类结构体的指针。...计算机读取数据的时候,我们假设一次读取四个字节,通过观察这幅图,我们发现如果不按内存对齐的方式来存储,我们读取数据时,同样是读取两次,但是信息被切割成了两部分,还要重新进行组合,由此可见内存对齐的必要性...现实生活: 一周的星期一到星期日是固定有限的,可以一一列举出来。 月份有十二个月,也可以一一列举出来。 性别有男女之分,也可以一一列举出来。...同一时间,只能使用它的一个成员,因为它的成员共用一块空间,所以改动一个也会导致其他的成员发生改变。 什么时候使用联合体(共用体)呢:允许成员公用一块空间,并且共用一块空间时不会影响整体的使用。...char a[5];//对齐数是1 所占空间大小是5个字节 int i;//对齐数是4 }; int main() { union Un u; printf("%d\n", sizeof

    8310
    领券