首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

数据现实空间与占用空间

2013-10-08 
数据实际空间与占用空间在windows中,我们建立一个文件时,不论文件有多小,哪怕是1个字节,都至少会占用4kb的

数据实际空间与占用空间

在windows中,我们建立一个文件时,不论文件有多小,哪怕是1个字节,都至少会占用4kb的空间。见下图

数据现实空间与占用空间

那为什么会这样呢?windows操作系统对磁盘采用分页管理方式,最小分页大小为4kb,也就是如果你的硬盘假设有100GB,那么,你的分页的个数是:(100×1000×1000)/4 个,当然了,你放入一个字符,只有1个字节的,但是他要分配到一个空间,而这个空间利用一个页大小就可以装得下,那么由于最小分页大小就是4kb,所以提示占用空间为4kb,实际大小占用一个字节查看你硬盘上的一个任意非空目录或者非空文件的属性,看到大小有2个数值:一个叫大小,也就是文件的大小;另外一个叫占用空间,就是占用的硬盘空间。 占用空间肯定大于等于文件大小,因为硬盘的最小单位是簇,任何文件再小也不会小于一簇,默认磁盘一簇一般是4KB。具体可以参照此文http://www.cnblogs.com/abinxm/archive/2010/02/02/1661734.html

当然如果只是建立了一个空文件,由于没有任何数据,不会占用任何空间,所以这时文件大小和占用空间都为0。见下图

数据现实空间与占用空间

文件相当于一个杯子,里面存的数据相当于是杯子里的水。如果我们要装水,哪怕是一滴水,都得用一个杯子来装(假定只能用杯子来装水)。所以一滴水占用的空间是一个杯子的空间。而如果没有水,我们不需要用杯子来装,所以也就不会占用空间,这就像一个空文件,里面什么都没有,自然也就不会占用空间了。

在前面的文章结构体的字节对齐(跨语言传参时尤为重要)说到结构体字节对齐是以数据块作为对齐参照的,对齐参照在文件的储存上,就相当于是4kb,而结构体中的每一个变量就相当于是文件中的数据,这些变量哪怕只有一个char,也得占用对齐参照的字节数。

所以我们可以这么认为,字节对齐就是为了让占用空间更好的分配,为了节省空间,就得让字节对齐达到最优化,比如按1个字节对齐,那么结构体占用的空间就会变的最优化。当然,有时了为了更好的数据交互或者移动指针的操作,我们会故意将结构体里的字节按变量占用的最多字节对齐,这样可以更方便的移动指针。比如,我们一般结构体按1字节对齐以最大化的节省空间。

#pragma pack(push,36)struct Info{int OrderNO;float CpuPercent;char UniqueCode[33];};#pragma pack(pop)




热点排行