栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

位段及其内存分配详解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

位段及其内存分配详解

位段
一、位段是什么?

位段的声明和结构是类似的,有两个不同:
1.位段的成员必须是 int、unsigned int 或signed int 。
2.位段的成员名后边有一个冒号和一个数字。

例如

struct A
{
 int _a:2;
 int _b:5;
 int _c:10;
 int _d:30;
};

A就是个位段类型,冒号后的数字代表他占几个比特位,例如_a就占2个比特位,_b就占一个比特位

二、位段大小如何计算

我们知道位段的成员只能是整型家族成员(char也属于整型家族)

以上面的代码为例

struct A
{
 int _a:2;
 int _b:5;
 int _c:10;
 int _d:30;
};

我们知道a占2个比特位,b占5个比特位,c占10个比特位,d占30个比特位,然后他们的类型是int。
位段开辟空间的规则是:

    位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。

可见我们A里都是int类型,所以他只会四个字节四个字节的开辟空间,在这他首先开辟了四个字节空间相当于32个比特位,a,b,c一共占17个比特位,再加上d就是47个,超过了之前开辟的空间:32比特位,所以编译器会在自动再开辟四个字节的空间去存d的30个字节,而不是存在一开始开辟的四个字节的剩余空间内。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号