C++中new和delete的背后
摘要: 我们可以看到数组new[]和delete[]的关键是, C++编译器在数组起始地址之前的4个字节保存了对象的数量N,后面会根据这个数量值进行N次的构造和析构 。
我们可以看到C++ 编译器在背后干了很多事情,可能会内联我们的函数, 也可以修改和产生其他一些函数, 而这是很多C开发者受不了的事情, 所以在内核级别, 很多人宁愿用C来减少编译器背后的干扰。
阅读全文
posted @
2013-11-17 21:17 Richard Wei 阅读(5625) |
评论 (0) 编辑
理解ATL中的一些汇编代码
摘要: 以我个人的经验,一些东西刚开始看不太懂就放一放,先去看一些基本的东西,比如不懂COM,先去学下C++ 中的虚函数;不懂C++模板,先去学下STL;不懂Thunk,先去看一下汇编,等有了一定的积累,回头再看,一切就觉得没这么难了。
阅读全文
posted @
2012-10-23 00:23 Richard Wei 阅读(3247) |
评论 (0) 编辑
堆栈桢的生成原理
摘要: 那么Windbg分析Dump时,会如何推理堆栈过程呢?
如果每个函数都是有标准的push ebp, 那么按照ebp递推就可以了;
否这就只能用其他方法分析,比如看看堆栈里某个地址是不是函数返回地址(该地址属于某个模块的代码段),这样就可以确定该地址是某个函数堆栈桢的起始地址。
阅读全文
posted @
2012-07-20 14:00 Richard Wei 阅读(5302) |
评论 (3) 编辑