[C language]一些零碎知识的解释
来源:互联网 发布:ubuntu打开超级终端 编辑:程序博客网 时间:2024/04/30 12:09
1、为什么需要边界对齐(特别是在结构体中)
参考链接:http://topic.csdn.net/u/20080306/15/408e814c-0e61-4a38-9f57-69c7804d3fed.html
成员对齐有一个重要的条件,即每个成员按自己的方式对齐.其对齐的规则是,每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(一般编译器默认是8字节)中较小的一个对齐.并且结构的长度必须为所用过的所有对齐参数的整数倍,不够就补空字节。
对齐的作用和原因:
各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据,显然在读取效率上下降很多。
2、FILE结构体
参考链接:http://zhidao.baidu.com/question/74043043.html
2.1、Turbo C中:
typedef struct { short level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ short bsize; /* Buffer size */ unsigned char *buffer; /* Data transfer buffer */ unsigned char *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */} FILE; /* This is the FILE object */
2.2、Visual C++中:
struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(即是文件的其始位置) int _flag; //文件标志 int _file; //文件的有效性验证 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz; //文件的大小 char *_tmpfname; //临时文件名 };typedef struct _iobuf FILE;
- [C language]一些零碎知识的解释
- 关于C语言的一些零碎知识
- C语言的一些零碎知识
- Objective C 的一些零碎知识
- C/C++一些零碎的知识
- 一些零碎的知识
- c/c++ 的零碎知识
- 查找错误的几个调试方法&一些C/C++的文章&一些零碎知识
- js的一些零碎知识积累
- 黑马程序员--关于一些零碎的知识
- 黑马程序员-- 一些零碎的知识
- struts2中一些零碎的边角知识
- struts2中一些零碎的小知识
- 线程的一些零碎知识总结
- 关于git的一些零碎知识
- 一些零碎VC知识
- VBA一些零碎知识
- 一些零碎知识积累
- SQL 函数及其应用笔记
- Oracle调优浅析
- LabVIEW中编程实现全屏
- NSDate基本用法
- Java 动态绑定,转来慢慢看
- [C language]一些零碎知识的解释
- 我的diango的搭建过程
- 杭电 hdu 3336 Count the string
- 幸福理财四大公式
- sqllite3
- linux解压缩命令
- 【学习笔记】 C++中struct 和class的区别
- Android Mediaplayer解读
- 一些IE样式的Bug也许答案就在这里