C中的工会背后有什么意义?

C中的工会背后有什么意义?,第1张

概述我正在阅读O’Reilly的实用C编程书,并阅读了关于C编程语言的K& R书籍,而我在理解联盟背后的概念时遇到了麻烦. 它们采用最大数据类型的大小来构建它们……最近分配的数据类型会覆盖其余数据……但为什么不根据需要使用/释放内存? 书中提到它用于通信,你需要设置相同大小的标志;并且在google网站上,它可以消除奇数大小的内存块……但它是否适用于现代的非嵌入式内存空间? 你可以用它和CPU寄存器做 我正在阅读O’Reilly的实用C编程书,并阅读了关于C编程语言的K& R书籍,而我在理解联盟背后的概念时遇到了麻烦.

它们采用最大数据类型的大小来构建它们……最近分配的数据类型会覆盖其余数据……但为什么不根据需要使用/释放内存?

书中提到它用于通信,你需要设置相同大小的标志;并且在Google网站上,它可以消除奇数大小的内存块……但它是否适用于现代的非嵌入式内存空间?

你可以用它和cpu寄存器做些狡猾的东西吗?它只是一个早期编程时代的延续吗?或者它,像臭名昭着的goto,仍然有一些强大的用途(可能在紧张的内存空间),这使得它值得保持?

解决方法 好吧,你几乎回答了你的问题:记忆.
在这些日子里,内存相当低,即使节省几千字节也很有用.

但即便在今天,工会也会有用.例如,如果您想要实现某种变体数据类型.最好的方法是使用联合.

这听起来不是很多,但我们假设你想要使用一个存储4个字符的字符串(如ID)或4个字节的数字(可能是某个哈希值或实际上只是一个数字)的变量.

如果你使用经典结构,这将是8个字节长(至少,如果你不幸,也有填充字节).使用联合它只有4个字节.所以你节省了50%的内存,这对于一个实例来说并不是很多,但想象一下这些实例中有一百万个.

虽然你可以通过强制转换或子类化来实现类似的东西,但仍然是最简单的方法.

总结

以上是内存溢出为你收集整理的C中的工会背后有什么意义?全部内容,希望文章能够帮你解决C中的工会背后有什么意义?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1239241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存