摘要: 内存映射文件的概念:通过内存映射函数,可以将磁盘文件全部或者部分映射到虚拟地址空间,一旦完成,对磁盘文件的访问,就可以像对内存文件一样便捷。通过该区域可以直接对被映射的磁盘文件进行访问.而不必执行文件I/O操作也无需对文件内容进行缓冲处理。就好像整个被映射的文件都加载到了内存一样,因此内存文件映射非常适合于用来管理大文件。内存映射文件的用途:系统用内存映射文件加载和执行EXE,DLL文件,既节省了page file的空间,又加快了程序的执行。用内存映射文件机制访问文件遮蔽了对文件I/O操作和文件内容的缓存操作。它是最有效的进程通信机制,其他的进程通信都基于内存文件映射。原型: void *.. 阅读全文
posted @ 2012-04-19 23:18 qimi 阅读(517) 评论(1) 推荐(0) 编辑
摘要: 所遇到的这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为:#ifdef 标识符程序段1#else程序段2#endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即:#ifdef程序段1#denif 这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C 阅读全文
posted @ 2012-04-17 22:51 qimi 阅读(611) 评论(0) 推荐(0) 编辑
摘要: double f;int num =(int) f*100;结果是:输入f = 1.23, 输出 num = 122. 输入f = 1.25 输出 num =125这就是著名的double精度损失问题。因为1.23在计算机里面只能表示为近似值:1.2299999999.........而1.25却能被精确的表示:解决的办法是:int num = (int)(f*100+0.0001),这个0.0001根据你需要的精度来设置,是可以改变的这时候,不管f=1.23还是f=1.25,结果都是我们想要的123和125.关键是要理解: 10110101 只是近似等于 1.0110101 * 2^7. 阅读全文
posted @ 2012-04-10 22:18 qimi 阅读(1250) 评论(0) 推荐(0) 编辑