
技术
文章平均质量分 93
apemancsdn
这个作者很懒,什么都没留下…
展开
-
使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
也就是在CreateFile的时候打开文件名指定: “//./Device”就可以了.因为代码比较短, 所以我不做注释, 相信大家看代码就能明白意思了.另外这里读写的都是软盘A盘第0扇区, 如果想读写其他的扇区, 那么可以使用API SetFilePointer.读扇区的方法(下面的代码演示从A盘的第0扇区读出数据, 写入到文件BOOT.BIN中):#include #inclu原创 2004-08-16 21:27:00 · 8587 阅读 · 4 评论 -
new的实际形式
如果让我们重载一个new操作符号,那么正统的重载方式为: void * operator new(unsigned int uSize) (1){return malloc(uSize);}也许你已经发现了,有的时候,new的形式远比这个复杂,比如MFC(在debug版)下的new就是这么个模样:void * operator new(unsign原创 2004-10-25 21:46:00 · 1892 阅读 · 0 评论 -
线程本地存储(Thread Local Storage, TLS)分析与使用
线程本地存储(Thread Local Storage, TLS)简单分析与使用 在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量可以使用关键字volatile进行声明; 那么如果一个变量不想使多个线程共享访问, 那么该怎么办呢? 呵呵, 这个办法就是TLS, 线程本地存储. 它的使用非常之简单, 只要对变量的声明使用__declspec(thread)就OK了.原创 2004-08-26 22:00:00 · 11815 阅读 · 8 评论 -
C++虚函数调用的反汇编解析
C++虚函数调用的反汇编解析 作者:阮建辉 虚函数的调用如何能实现其“虚”?作为C++多态的表现手段,估计很多人对其实现机制感兴趣。大约一般的教科书就说到这个C++强大机制的时候,就是教大家怎么用,何时用,而不会去探究一下这个虚函数的真正实现细节。(当然,因为不同的编译器厂家,可能对虚函数有自己的实现,呵呵,这就算是虚函数对于编译器的“多态”了:)。 作为编译型语言,C原创 2004-08-23 21:11:00 · 17664 阅读 · 4 评论 -
COM实现聚合所使用的C++技巧
COM聚合作为COM实现接口复用的一种手段, 在进行多接口转发的时候是一种有效而快速的方法; 不过要在转发之后保证接口函数的语意保持一致, 必须使用一些特定的技巧, 下面的代码就演示了COM在实现聚合时所使用的技巧:class Base{public: virtual void Output() { printf("Base::Output/n")原创 2004-08-29 19:11:00 · 3436 阅读 · 4 评论 -
使用另类方式调用函数
大家可以自己编译运行一下下面的代码,看看为什么是这样哦:)#include #include void __stdcall Test1(){ printf("Test1/n");} void __stdcall Test2(){ printf("Test2/n");} void __stdcall Test3(){ pr原创 2004-08-29 01:00:00 · 1775 阅读 · 4 评论 -
一个单继承类体系的RTTI实现(根据类名判断类指针)
在MFC中,我们见识了MFC中RTTI的实现,在MFC中,使用CruntimeClass以及DECLARE_DYNAMIC和DECLARE_IMPLEMENT宏等实现的RTTI功能相当强大,但是在我们一般的程序中还用不着这么复杂的RTTI,在C++标准中提供的typeid操作符和type_info信息提供的RTTI支持就相当的简单,只是简单的比较两个类对象和指针是否属于同一类;而对于我们平时简单的原创 2004-08-29 00:45:00 · 1948 阅读 · 0 评论 -
使用C和汇编混合实现strcpy(欢迎扔砖)
我们经常使用的strcpy,相信很多人都知道它的实现了,那么有没有想过自己写一个strcpy呢?在C下面,据说这是很经典的实现方法哦,简洁而干净:char * strcopy2(char * szDst, const char * szSrc){char * szTemp = szDst;while (*szDst++ = *szSrc++);szDst = ‘/0’;re原创 2004-08-29 00:21:00 · 4116 阅读 · 10 评论 -
值交换的两种方法及其效率分析
比如, 我们有两个数a, b要交换值, 我们一般通过这样的方式来达到目的:int c;c = a;a = b;b = c;这样来达到交换a, b值的目的;经常使用位操作的人, 或者会有这样的"高招":a ^= b;b ^= a;a ^= b;这样也能交换a, b的值, 而且还少用了一个中间参数.现在我们看到了我们交换值的两种做法,到底哪一种更好呢?呵原创 2004-08-25 20:34:00 · 2509 阅读 · 5 评论 -
奇怪的sizeof
对于sizeof,想必大家都是非常熟悉的了;比如:printf(”sizeof int: %d/n”, sizeof(INT));//这里INT被定义成:typedef int INT;恩,结果是:sizeof int: 4;如果我这么写呢(也就是去掉了sizeof的括号):printf(”sizeof int: %d/n”, sizeof INT);当然,结果还是一样的;不过如果我这么写:pri原创 2004-12-13 19:52:00 · 1627 阅读 · 2 评论