C++中new和delete的背后
摘要: 我們可以看到數組new[]和delete[]的關鍵是, C++編譯器在數組起始地址之前的4個字節保存了對象的數量N,后面會根據這個數量值進行N次的構造和析構 。
我們可以看到C++ 編譯器在背后干了很多事情,可能會內聯我們的函數, 也可以修改和產生其他一些函數, 而這是很多C開發者受不了的事情, 所以在內核級別, 很多人寧愿用C來減少編譯器背后的干擾。
閱讀全文
posted @
2013-11-17 21:17 Richard Wei 閱讀(5644) |
評論 (0) 編輯
理解ATL中的一些匯編代碼
摘要: 以我個人的經驗,一些東西剛開始看不太懂就放一放,先去看一些基本的東西,比如不懂COM,先去學下C++ 中的虛函數;不懂C++模板,先去學下STL;不懂Thunk,先去看一下匯編,等有了一定的積累,回頭再看,一切就覺得沒這么難了。
閱讀全文
posted @
2012-10-23 00:23 Richard Wei 閱讀(3288) |
評論 (0) 編輯
堆棧楨的生成原理
摘要: 那么Windbg分析Dump時,會如何推理堆棧過程呢?
如果每個函數都是有標準的push ebp, 那么按照ebp遞推就可以了;
否這就只能用其他方法分析,比如看看堆棧里某個地址是不是函數返回地址(該地址屬于某個模塊的代碼段),這樣就可以確定該地址是某個函數堆棧楨的起始地址。
閱讀全文
posted @
2012-07-20 14:00 Richard Wei 閱讀(5362) |
評論 (3) 編輯