牛肉圆粉不加葱

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

03 2013 档案

摘要:总有各种各样的编译链接过程和产生的文件,为加深记忆及方便下次查看,特作记录 文件篇: .map:映射文件(.map)包含了正在链接的程序的以下信息 1.模块名,是文件的基本名称 2.程序头部的时间戳(不是从文件系统中获得) 3.程序中组的列表,包含每个组的起始地址(assection:offset)... 阅读全文
posted @ 2013-03-28 18:39 牛肉圆粉不加葱 阅读(176) 评论(0) 推荐(0)

摘要:总有一些容易搞错的关于类的小细节,用这篇随笔记录一下~1.类的const成员变量必须也只能在构造函数的参数列表中初始化。 阅读全文
posted @ 2013-03-27 10:18 牛肉圆粉不加葱 阅读(164) 评论(0) 推荐(0)

摘要:虚表(vtable)一直都好像很神秘的样子,今天工作中涉及到虚表,就做下一些记录吧~ 1.每一个拥有虚函数的类都有一个虚表,注意是虚函数。 2.虚表实际上是一个函数指针数组,记录了本类所有虚函数的地址。当类对象调用虚函数时,会根据对应关系从虚表中获得虚函数指针,再去执行函数,这种行为称为晚绑定。 3... 阅读全文
posted @ 2013-03-26 17:19 牛肉圆粉不加葱 阅读(239) 评论(0) 推荐(0)

摘要:记录一下,下次搞不清可以来看看。 静态编译/动态编译 静态编译:是指编译器在编译可执行文件的时候,将可执行文件需要调用的对应的动态链接库中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候可以不依赖动态链接库。 动态编译:动态编译的可执行文件需要附带一个动态链接库,在执行时,需要调用其动... 阅读全文
posted @ 2013-03-25 15:19 牛肉圆粉不加葱 阅读(322) 评论(0) 推荐(0)

摘要:一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位 阅读全文
posted @ 2013-03-21 18:44 牛肉圆粉不加葱 阅读(196) 评论(0) 推荐(0)

摘要:要使用windbg分析dump必须加载正确的符号,可以通过设置Symbols File Path为"D:/Symbols;SRV*D:/Symbols*http://msdl.microsoft.com/download/symbols",当windbg在D:/Symbols中找不到需要的符号时,... 阅读全文
posted @ 2013-03-21 10:56 牛肉圆粉不加葱 阅读(304) 评论(0) 推荐(0)

摘要:static_cast <type-id> ( expression )@breif:将表达式expression从当前类型转换为type-id所指类型。@remark:没有运行时的类型检查来保证转换的安全性。static_cast操作符可以被用来一把一个指针变量转换为基类型把一个指针变量转换为派生类型。这样的转换并不总是安全。总之,你可以使用static_cast当你想当你想把数字类型比如enums、int转换为float,并且你对转换的数据类型有把握。static_cast不像dynamic_cast那么安全,因为static_cast不会运行时类型检查,但dynamic_ca 阅读全文
posted @ 2013-03-20 10:20 牛肉圆粉不加葱 阅读(417) 评论(0) 推荐(0)

摘要:新建工程时会自动生成一些文件,编译链接时也会生成各种各样的文件,下面做一些记录及说明~stdafx.h:stdafx.h为预编译头文件。用于包含工程中很多文件需要包含的文件,编译器预先编译包含在stdafx.h中的文件,再以后的编译中使用之前预先编译好的结果,不用再次编译,提高了编译速度(当然,如果stdafx.h或者stdafx.cpp修改了需要重新编译)。 阅读全文
posted @ 2013-03-20 00:52 牛肉圆粉不加葱 阅读(171) 评论(0) 推荐(0)

摘要:函数原型:LONG InterlockedIncrement( LONG volatile* Addend); 先来看看MSDN上怎么说:InterlockedIncre函数增加指定32位变量的值并检查结果。这个函数防止多余一条线程同时访问同一个变量。要操作64位的变量,使用Interloc... 阅读全文
posted @ 2013-03-19 20:37 牛肉圆粉不加葱 阅读(301) 评论(0) 推荐(0)

摘要:1.static变量被放在程序的全局存储区中,这样可以在下次调用的时候还可以保持原来的赋值。这一点是它和堆变量和栈变量的重要区别。2.变量用static告知编译器,自己仅在变量的作用范围内可见,不能被其他文件引用。这一点是和全局变量的区别。3.访问static变量、全局变量要考虑多线程问题。4.非类的staitc变量会自动初始化。5.static非成员函数的作用域仅限于本文件,不能被其他文件引用。在类中,有static成员变量及static成员函数1.static成员变量是这个类的公共变量,不是该类某个对象的成员变量,不能通过this指针访问,必须通过作用域操作符"::"访 阅读全文
posted @ 2013-03-12 20:43 牛肉圆粉不加葱 阅读(130) 评论(0) 推荐(0)

摘要:1.定义接口或dll导出函数时,输入输出参数应为最基本的C类型:因为如果为被二次封装过的类型,如STL的map,list之类的类型,都有自己特有的数据结构,若用这些类型作为参数,其他语言如python、java无法构造正确的参数;而用最基本的类型如int、char或最基本类型的数组或结构体等内存排列可被其他语言构造的类型可实现跨平台跨语言。 阅读全文
posted @ 2013-03-07 21:04 牛肉圆粉不加葱 阅读(128) 评论(0) 推荐(0)

摘要:2013-3-6 11:33:02策略模式:定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的替换独立于使用算法的客户。设计原则一:把可能会引起代码改动的变的部分与不变的部分分离,把变的部分封装起来,在未来变化中只需修改变的部分,无需修改不变部分;使代码改动小,也避免了改动对不变部分的影响。设计原则二:针对接口编程,而不是针对实现编程;这样调用者就不需要知道实现的细节了。而且,之后的升级只需修改接口实现,并不需要修改调用接口部分。设计原则三:多用组合,少用继承。设计原则四:要让类免于修改,易于扩展。即对修改关闭,对扩展开放。2013-3-11 0:32:23观察者 阅读全文
posted @ 2013-03-06 15:41 牛肉圆粉不加葱 阅读(101) 评论(0) 推荐(0)