IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:sizeof

共 2 篇相关文章

IT 累计浏览 1,631

Swift 的sizeof 和 sizeofValue

这篇讲的是从 C 过渡到 Swift 的开发者,在处理内存尺寸计算时需要注意的关键差异。文章从 C 语言中无处不在的 `sizeof` 运算符切入,指出它在 Swift 中被封装成了两个独立的方法:只能接受类型的 `sizeof` 和接受具体值的 `sizeofValue`。 最关键的区别在于 `sizeofValue` 的行为。它返回的并非像 C 那样的数组内容总大小,而是这个值本身(在 Swift 中往往是一个引用)的内存尺寸。作者用一个 `[CChar]` 数组的例子做了清晰对比:在 C 中 `sizeof(bytes)` 得到 3,而在 Swift 中 `sizeofValue(bytes)` 在 64 位系统下得到的是 8,这实际上是数组引用的长度。 文章接着指出了由此带来的实践影响:若要在 Swift 中像生成 `NSData` 时计算缓冲区大小,不能再直接使用 `sizeofValue`,而需要结合 `sizeof(CChar)` 和 `count` 属性进行手动计算。最后,文章通过一个关于枚举类型的练习题,引导读者深入思考 `sizeof` 与 `sizeofValue` 配合原始值时的不同表现,巩固对这一新模型的理解。

IT 累计浏览 3,232

c关键字-sizeof的种种

这篇技术博客深入探讨了C语言中一个常被误解的关键字——`sizeof`。作者从它作为编译时关键字而非函数或宏的核心身份切入,剖析了其值在编译阶段确定的根本特性。 文章通过一系列经典且易错的示例,直观展示了`sizeof`在不同上下文中的行为差异。例如,它对数组名和指针的计算结果完全不同,这一细节是许多C程序员必须厘清的知识点。同时,文章也详细讲解了`sizeof`对结构体、联合体等复合类型大小的计算规则,包括对齐方式可能带来的影响。 作者的讲解侧重于原理与实践的结合,帮助读者理解编译器是如何思考并计算这些大小的。掌握这些细微之处,能让你在编写涉及内存分配、数据结构布局的代码时,做出更精准的判断,从而避免潜在的内存错误。