C/C++
hw_henry2008
博客已迁移至:http://kulv.sinaapp.com/,这里不再使用
展开
-
COM字符串转换大全
COM Strings <br />20 Jan 2001 13:59Introduction<br />COM uses Unicode exclusively. COM strings are called "OLE Strings" or "Basic Strings." COM objects that aren't built under Unicode must convert OLE strings to ASCII in order to pass them to Win32 and t转载 2010-09-02 10:08:00 · 3106 阅读 · 0 评论 -
深入剖析PE文件
PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解.一、 基本结构。转载:http://blog.csdn.net/lwglucky/archive/2010/03/15/5380105.aspx转载 2011-06-26 00:29:00 · 708 阅读 · 0 评论 -
The Biggest Changes in C++11 (and Why You Should Care)
From:http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/The Biggest Changes in C++11 (and Why You Should Care)It’s been 13 years since the fir转载 2011-06-25 10:54:00 · 706 阅读 · 0 评论 -
Bjarne Stroustrup Expounds on Concepts and the Future of C++
Bjarne Stroustrup Expounds on Concepts and the Future of C++a year ago, everyone was all but certain that the C++0x standard was just around the corner, and that it would include concepts (see D转载 2011-06-25 11:09:00 · 853 阅读 · 0 评论 -
Windows加载器与模块初始化
(Microsoft System Journal 1999年9月Under The Hood专栏)译者:SmartTech 电子信箱:zhzhtst@163.com 本文是Matt Pietrek在1999年9月的MSJ杂志上发表的关于Windows加载器与模块初始化方面的文章。作者深入分析了LdrpRunInitializeRoutines例程的作用,用C语言写出了此函数的伪代转载 2011-06-26 00:08:00 · 2104 阅读 · 0 评论 -
关于C++中RTTI的编码实现
http://www.cnblogs.com/xiaoyuer323/archive/2005/06/24/180183.html关于C++中RTTI的编码实现摘要: RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术。现行的C++标准对RTTI已经有了明确的支持。不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现转载 2011-06-29 20:50:00 · 695 阅读 · 1 评论 -
面试某公司时一边写的代码
class a { a(){ //设置虚函数表指针 指针。virfuc() ; } virtual virfuc() { } int a ; virtual ~a(){} ; const int a = 9 ;};原创 2011-07-25 23:23:05 · 721 阅读 · 0 评论 -
try/catch的实现原理 ---转
转:try/catch的实现原理1. VC++的try/catch是基于Win32的SEH实现的。2. try/catch只能捕捉当前线程的异常,每个线程都有自己的异常处理入口。3. 异常处理入口是由OS负责调用的,在异常发生时。4. 为了使用SEH,转载 2011-08-11 14:45:44 · 5693 阅读 · 1 评论 -
typedef 在类里面定义一个类型时的问题。
博客转移至:http://kulv.sinaapp.com/?p=28class Test{public: typedef int ( func )( void );//定义一个函数指针类型, int print(void) { return 0 ;} ;//下面的错误中, //如果把print函数定义为friend 或者static的,就可以了。但是无法满原创 2010-12-27 12:32:00 · 819 阅读 · 1 评论 -
C++虚函数多继承的虚函数表指针的测试
博客已迁移至:http://kulv.sinaapp.com/,这里不再使用C++虚函数多继承的虚函数表指针的测试 看了很多关于虚函数的实现机制,现在来动手验证一下吧··· #include using namespace std;class A { virtual a(){};} ;class B{ virtual b() {} ;};原创 2011-05-24 01:26:00 · 2091 阅读 · 12 评论 -
关于基类构造函数调用虚函数实际调用的不是派生类的问题的原因
博客已迁移至:http://kulv.sinaapp.com/关于基类构造函数调用虚函数实际调用的不是派生类的问题的原因 我们知道,类的构造函数里面编译器插入了很多代码,比如异常安全,虚函数表指针的设置,基类构造,等等。而且,关键是这些代码时在任何用户的代码(非初始化)的地方之前插入的,问题就来了···如果在基类构造函数里面调用基类的虚函数,那么,实际调用的却不像我原创 2011-06-14 17:54:00 · 1425 阅读 · 0 评论 -
ATL与MFC消息分发机制的对比---由金山开源代码引出的思考(一)
博客已迁移至:http://kulv.sinaapp.com/,这里不再使用ATL与MFC消息分发机制的对比---由金山开源代码引出的思考 (一) 前几天刚看金山开源代码时写了一篇博客分析了一下其消息机制的实现方式。后来发现写的很多都是ATL里面的,最**的是犯了一个严重的错误,把ATL的窗口消息机制里面一个重要技术:实现HWND和对应窗口类this指针之间的映射的原创 2011-05-29 22:33:00 · 9971 阅读 · 20 评论 -
Simpler Multithreading in C++0x
One major new feature in the C++0x standard is multi-threading support. Prior to C++0x, any multi-threading support in your C++ compiler has been provided as an extension to the C++ standard, which ha转载 2011-06-25 11:05:00 · 594 阅读 · 0 评论 -
C++ 拷贝构造函数和赋值操作符别忘了基类
C++ 拷贝构造函数和赋值操作符别忘了基类 #include "StdAfx.h"#include using namespace std;class A {public: A( ){ cout << "A()" << endl ; }; A( const A & oth ){ cout << "A(const A&oth)" << endl ;原创 2011-06-14 13:54:00 · 777 阅读 · 0 评论 -
好文转载:ELF文件格式及程序加载执行过程总汇
ELF文件格式及程序加载执行过程总汇好文转自: http://www.linuxsir.org/bbs/printthread.php?t=206356这是我这段时间学习elf文件格式搜集的资料,其中的一些重量级文档,比如linkers and loaders ,the executable and linkable format等等就不贴出来了,太大----文章列转载 2011-06-06 22:53:00 · 3758 阅读 · 0 评论 -
永远说不完的堆和栈
<br /> <br />堆栈 <br />在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。 <br />要点: <br />堆:顺序随意 <br />栈:先进后出 <br />堆和栈的区别 <br />一、预备知识—程序的内存分配 <br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <转载 2010-10-16 23:02:00 · 577 阅读 · 1 评论 -
2011应届生百度校园招聘题
<br />刚参加百度2011校园招聘<br />因为报的是自然语言处理部,我是大三的。<br />感觉挺难的,呵呵呵···<br /> <br />题目记不清楚了,题目很少,就10个以下。<br /> <br />1。设计一个栈,要求:有个min函数求栈中元素的最小值。push , pop ,min 的时间复杂度都是o(1) 的。<br /> <br />2。 一个字符串匹配函数,strcumcmp,要求:<br />其他跟正常的strcmp一样,只是如果中间两个下标的地方都为数字,那得把后面的数字连在一原创 2010-10-17 12:45:00 · 892 阅读 · 3 评论 -
C--语言编译器语法分析完成,小小的记录一下
Begin Analysis!Move in : intReduce : type-specifier --> int ● Reduce : declaration-specifiers --> type-specifier ● Move in : helloReduce : direct-declarator --> identifier ● Reduce : declarator --> direct-declarator ● Reduce : init-declar原创 2010-12-13 00:29:00 · 746 阅读 · 0 评论 -
派生类初始化基类成员时的特殊问题
如下代码:class Basic{public: int data ;protected:private:};class Son : public Basic {public: Son():data(0) { }protected:private:};在初始化一个基类成员的时候,使用构造函数的成员初始化列表,然而用如下方法时提示错误:error C2614: “Son”: 非法的成员初始化:“data”不是基或成员其实这个提示是错误的,但是确实也应该原创 2010-12-28 20:23:00 · 5981 阅读 · 0 评论 -
一个跨平台的 C++ 内存泄漏检测器
一个跨平台的 C++ 内存泄漏检测器<br />-----转自:http://hi.baidu.com/july_yao/blog/item/ad2dd9eccfc9a02c63d09fbd.html<br />内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用、转载 2011-01-01 18:57:00 · 1191 阅读 · 9 评论 -
如何在linux下检测内存泄漏
如何在linux下检测内存泄漏 <br /><br /> 本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨。其中包括 C++ 中的 new 和 delete 的基本原理,内存检测子系统的实现原理和具体方法,以及内存泄漏检测的高级话题。作为内存检测子系统实现的一部分,提供了一个具有更好的使用特性的互斥体(Mutex)类。<br />1.开发背景<br />在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程转载 2011-01-01 19:00:00 · 897 阅读 · 0 评论 -
Thunk 技术的一个改进
<br />转自:http://www.vckbase.com/document/viewdoc/?id=1817<br /> <br />摘要:介绍了 thunk 技术中如何避免直接写机器码。<br />关键字:Thunk 机器码 this指针<br /> Thunk技术,一般认为是在程序中直接构造出可执行代码的技术(在正常情况下,这是编译器的任务)。《深度探索C++对象模型》中对这个词的来源有过考证(在中文版的162页),说thunk是knuth的倒拼字。knuth就是大名鼎鼎的计算机经典名著《Th转载 2011-05-23 13:07:00 · 1595 阅读 · 7 评论 -
关于C++虚函数默认参数的问题。Effective C++ 条款38: 决不要重新定义继承而来的缺省参数值
昨晚在chgaowei的博客上关于讨论C++虚函数的默认参数问题,刚翻书找了一下,在Effective C++ 中的38条有说明。直接上原文吧,最后加几句细点的理解条款38: 决不要重新定义继承而来的缺省参数值让我们从一开始就把问题简化。缺省参数只能作为函数的一部分而存在;另外,只有两种函数可以继承:虚函数和非虚函数。因此,重定义缺省参数值的唯一方法是重定义一个继承而来的函数。然而,重定义继承而来的非虚函数是一种错误(参见条款37),所以,我们完全可以把讨论的范围缩小为 "继承一个有缺省参数值的虚函数" 的原创 2011-05-23 10:49:00 · 7951 阅读 · 8 评论 -
一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
<br />转自:http://blog.csdn.net/JerKii/archive/2006/04/07/654188.aspx<br />一种实现Win32窗口过程函数(Window Procedure)的新方法<br />基于Thunk实现的类成员消息处理函数<br />JERKII.SHANG (JERKII@HOTMAIL.COM)<br />MAR.10th - 31st, 2006<br />Windows是一个消息驱动的操作系统,在系统中发生的所有消息均需要通过消息处理过程(或叫窗口过程转载 2011-05-23 13:11:00 · 1490 阅读 · 3 评论 -
C语言函数的调用约定-转载
转自:http://blog.csdn.net/JFDream_15/archive/2007/08/21/1752930.aspx在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传转载 2011-05-29 17:06:00 · 1588 阅读 · 2 评论 -
Jim Chan函数调用的汇编程序过程
转自:http://blog.pfan.cn/7zeal/30189.htmlJim Chan摘要:本文说明高级语言编译成汇编语言后,高级语言中函数调用的汇编程序过程。正文:高级语言编译成汇编程序以后,在高级语言中的函数调用的汇编程序过程如下:1.将函数参数入栈,第一个参数在栈顶,最后一个参数在栈底。2.执行CALL指令,调用该函数,进入该函数代码空间。a.执行CALL指令,将CALL指令下一转载 2011-06-05 13:54:00 · 806 阅读 · 0 评论 -
ATL与MFC消息分发机制的对比---由金山开源代码引出的思考(二)
博客已迁移至:http://kulv.sinaapp.com/,这里不再使用ATL与MFC消息分发机制的对比---由金山开源代码引出的思考(二) 接本文上一部分:http://blog.csdn.net/hw_henry2008/archive/2011/05/29/6453676.aspx 上面说完了ATL的消息分发方式,下面继续MFC的实现机制。原创 2011-05-29 23:09:00 · 14599 阅读 · 31 评论