kuikuitage

  博客园  ::  :: 新随笔  :: 联系 ::  :: 管理
上一页 1 ··· 9 10 11 12 13 14 15 下一页

2020年2月23日

摘要: 编译器为VS2017 先看一个简单的虚继承 反汇编后跟踪下执行流程 首先要明确栈地址是从高到低的。栈底基址ebp内存高地址,栈顶esp内存低地址。 解析如下: "为何栈的初始化值为0XCC" 可见初始化大小为0x33 = 51个dword ptr大小。dword ptr即双字指针,这里32位机即4字 阅读全文
posted @ 2020-02-23 18:35 kuikuitage 阅读(292) 评论(0) 推荐(0) 编辑

2020年2月22日

摘要: 直接打开反汇编,内存,寄存器和局部变量四个窗口 图1 这里先看看进main函数之前的栈基址ebp和栈顶esp ebp = 0x0117FE2C,esp = 0x0117FE1C 即调用main函数的栈大小实际只有16个字节。 图2 push esp之后,ebp = 0x0117FE2C压栈,同时es 阅读全文
posted @ 2020-02-22 19:43 kuikuitage 阅读(505) 评论(0) 推荐(0) 编辑

2020年2月18日

摘要: 以下基于VS2008测试 看内存布局为,VS工具的命令提示符,cd到当前工程当前文件目录 cl [filename] /d1reportSingleClassLayoutX便可查看filename中的类X的内存布局。 一.单继承 1.空类单继承 可见空类被继承后,只要子类非空(存在虚函数或者虚基类) 阅读全文
posted @ 2020-02-18 15:46 kuikuitage 阅读(204) 评论(0) 推荐(0) 编辑

2020年2月16日

摘要:   来信者编译器: 1.考虑语言的特性,虚表,是否需要在子类中分配额外的一个指针存放虚基类表地址。来信者的编译器好像看图示好像没有 2.考虑编译器优化,空虚基类的1字节在子类有成员变量的时候是否被优化掉,来信者编译器没有优化掉。 3.考虑字节对齐补齐。和系统位数和编译器设定的对齐字节数有关。 即 阅读全文
posted @ 2020-02-16 21:44 kuikuitage 阅读(153) 评论(0) 推荐(0) 编辑

2020年2月11日

摘要: 1.默认构造 由于编译器会尽可能的为所有的警告和错误做出解释。但也因此导致了部分情况下的过度解析。 书中给的例子是编译器由于过度解析,使用了类型转换运算符的解析代码,导致隐藏了真正的错误。  这里断点只执行到printf,其中构造函数为getInter局部的Integer inter(10);触发 阅读全文
posted @ 2020-02-11 20:54 kuikuitage 阅读(213) 评论(0) 推荐(0) 编辑

2019年8月24日

摘要: @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft Windows GroupPolicy ClientExtensions Package~3 .mum List.txt dir /b C:\Windows\ 阅读全文
posted @ 2019-08-24 00:19 kuikuitage 阅读(442) 评论(0) 推荐(0) 编辑

2019年8月13日

摘要: find ./ name .c exec grep E '^\\s if|^\\s elif' {} \; ./tmp 找宏 cat ./tmp | grep E '^\s [^\\/]+' o ./tmp2 找各行 后面不是接//注释的 cat ./tmp | grep E '^\s [^\\/] 阅读全文
posted @ 2019-08-13 01:42 kuikuitage 阅读(183) 评论(0) 推荐(0) 编辑

2019年6月10日

摘要: 当存在部分子类共有的成员,但直接提到基类又不必要的情况下。使用装饰模式将那部分共有成员独立出来成为装饰类,包含这些部分共有的成员,需要这些成员的继承自该装饰类,不需要的直接继承基类。 base.h imp.h imp.cpp cpp include include "imp.h" using nam 阅读全文
posted @ 2019-06-10 01:45 kuikuitage 阅读(104) 评论(0) 推荐(0) 编辑

2019年6月8日

摘要: 观察者模式常用于事件通知。 observer.h observer.cpp observer.cpp c++ include include "Observer.h" using namespace std; void CObserverProgressBar::Doprogress(float p 阅读全文
posted @ 2019-06-08 21:00 kuikuitage 阅读(115) 评论(0) 推荐(0) 编辑

摘要: 策略模式是将共同行为(函数)抽象成接口 这里使用工厂方法创建策略对象使用策略模式 strategyFactory.h strategyFactory.cpp strategy.h strategy.cpp 阅读全文
posted @ 2019-06-08 01:39 kuikuitage 阅读(94) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 15 下一页