C++
yongqiangyue
这个作者很懒,什么都没留下…
展开
-
C/C++浮点数在内存中的存储方式
任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法。转载 2012-07-04 10:47:44 · 515 阅读 · 1 评论 -
临界区(Critical section)与互斥体(Mutex)的区别
1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。4、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。5、互斥量:为协调共同对一个转载 2012-08-28 18:05:34 · 1531 阅读 · 0 评论 -
CreateFileMapping和MapViewOfFile函数
在开发软件过程里,也经常碰到进程间共享数据的需求。比如A进程创建计算数据,B进程进行显示数据的图形。这样的开发方式可以把一个大程序分开成独立的小程序,提高软件的成功率,也可以更加适合团队一起开发,加快软件的开发速度。之前讲过一种使用命名管道的方式实现,下面就来使用文件映射的方式进行共享数据。先要使用函数CreateFileMapping来创建一个想共享的文件数据句柄,然后使用MapViewOfFi转载 2012-08-01 13:20:46 · 1424 阅读 · 0 评论 -
进程间通信 - 命名管道实现
总结对于命名管道来说的话,简单理解的话,其实是可以将其看做是一种 Socket 的,而对于命名管道也就是那几个 API 在使用,对于一些不常用的 API ,感兴趣的也可以从 MSDN 中获取到这部分信息。对于进程间的通信的话,其实也就可以利用介绍的这四种方式来实现了,第一种是利用剪贴板实现本机进程间的通信。第二种是利用邮槽实现本机或跨网络进程间的通信。第三种是利用匿名管转载 2012-08-01 11:30:49 · 2505 阅读 · 0 评论 -
改变进程和线程的优先级(Windows)
Windows平台上的关于进程和线程创建和修改优先级方法1. 设置线程的优先级 SetThreadPriority 2. 创建线程函数 CreateThread3. 设置进程的优先级 SetPriorityClass4. 创建进程函数 CreateProcess原创 2012-07-31 15:39:21 · 2738 阅读 · 0 评论 -
多线程架构图
原创 2012-07-30 16:33:53 · 830 阅读 · 0 评论 -
将byte数组的内容转换成BSTR类型,反之。
问题描述:之前我们有个接口类似int WINAPI ReadBiosVersion(BYTE *bios, ULONG size, char *version);这个接口是包装在dll中,是操作底层bios的。提供接口的人,提供了32bit和64bit两套dll.而我们的应用程序是32bit的,需要在64bit OS上运行,就需要调用64bit.所以我们的方案是上篇文章介绍的使用进程外的COM原创 2012-08-07 15:09:16 · 3098 阅读 · 1 评论 -
32进程调用64dll的解决方法
32位进程调用64位dll应该也可以通过这种方法解决,原因64位windows系统下安装了32位和64位两套COM系统(本人已验证) 最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32转载 2012-08-02 18:36:16 · 4934 阅读 · 1 评论 -
运行的应用程序的当前工作目录和所在的目录的区别
周末和一个做linux平台开发的朋友讨论了下如何获取当前运行程序所在的目录的问题。首先我在这里简单的介绍下运行的应用程序的当前工作目录和运行应用程序所在的目录的区别? 当前工作目录 (Current Working Directory) 一般来说,每个进程都有一个与之相关联的分级文件系统(hierarchical file system)下的目录,称之为该进程的当前工作目原创 2012-07-02 15:49:38 · 4129 阅读 · 0 评论 -
x&x-1的问题?
1. 判断一个整数是否是2的N次方?bool foo(int n){ if(n == 0) return true; if(n < 0) return false; return !(n&n-1);}2.统计一个整数的二进制中1的个数int foo(int n){ int nCount = 0; while(n) { nCount++; n =原创 2012-07-04 13:49:22 · 657 阅读 · 0 评论 -
C语言操作符优先级
C语言操作符优先级优先级运算符含义要求运算对象的个数结合方向1()[]->.圆括号下标运算符指向结构体成员运算符结构体成员运算符自左至右2!逻辑非运算符1(单目运算符)转载 2012-07-04 13:28:13 · 399 阅读 · 0 评论 -
按位异或运算符的特点?
异或(^)运算符又称XOR运算符定义:当参与运算的两位相同时为0,不同时为1。0^0=0,0^1=1, 1^0=1, 1^1=0。特点:1. a^a=0 2. a^b=b^a 3. a^b^b=a应用:1. 按位异或实现某特定位的翻转 2. 按位异或实现两个数值的交换,不用中间临时变量。例如:a=1010原创 2012-07-04 14:28:18 · 879 阅读 · 0 评论 -
C与C++的特点
C是一个结构化语言,重点在算法和数据结构。C程序的设计者首先考虑的是如何通过一个过程,对输入(或者环境条件)进行运算处理得当输出(或实现过程(事务)控制)。而对C++,首先考虑的是如何构造一个对象模型,让对象模型能够契合与对应的问题域,这样就可以通过对象的状态信息得到输出或者实现过程(事务)控制。对应大规模的数值运算,C/C++和java/.net之间没有明显的性能差别。不过,如果运算设计向量转载 2012-07-04 16:02:13 · 412 阅读 · 0 评论 -
求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
#include #include #include using namespace std;void maxNumTimes(int a[], int len, int b[]){ map mapData; int count = 0; for(int i = 0; i < len; i++) { mapData[a[i]]++; } //int max time原创 2012-08-24 17:13:21 · 4542 阅读 · 0 评论