原创 使用Windbg在XP下Heap追蹤失敗的原因

1、故事背景      最近同事的代碼中碰到一個bug會導致奔潰的bug,從dump上看是由於某個對象的堆內存指針被釋放了,但代碼仍調用了該對象指針的虛函數,從而引起內存訪問違法崩潰,由於該類被大量使用,無法直接定位到具體哪個類被提前釋放

原创 告別CSDN,轉去博客園(http://www.cnblogs.com/organic/)

在CSDN開博客的時間不長,陸陸續續也寫了一些文章,但10月後CSDN寫的博客除了專家外很難能夠上到博客首頁上去了,不論寫的質量怎麼樣,長期在博客首頁看到的都是專家的文章,誠然,專家寫的文章質量肯定不低,但這樣很明顯打擊了我們這些新鮮的血

原创 誰在死鎖Mutex——用Windbg查找Mutex死鎖所有者線程

Who is blocking that Mutex? - Fun with WinDbg, CDB and KD 05 Aug 2006 By Ingo Rammer I'm currently toyin

原创 大話設計模式C++版——工廠模式在COM中的典型應用

    上篇《大話設計模式C++版——抽象工廠模式》中,我們拯救世界未遂,留下小小的遺憾,本篇中我們將給出一個解決方案——COM組件技術,同時也順便扯扯工廠模式在COM組件技術中的應用。     工廠模式違背開放—封閉原則的根本原因在於對

原创 數據驅動編程之表驅動法

本文示例代碼採用的是c語言。 之前介紹過數據驅動編程《什麼是數據驅動編程》。裏面介紹了一個簡單的數據驅動手法。今天更進一步,介紹一個稍微複雜,更加實用的一點手法——表驅動法。關於表驅動法,在《unix編程藝術》中有提到,更詳細的描述可以看

原创 大話設計模式C++版——抽象工廠模式

     前面說過,簡單工廠模式是最基礎的一種設計模式,那以工廠命名的設計模式就是23種設計模式中最多的一種,他們一脈相承,一步一步進化而來,這裏就是其中的最後一種——抽象工廠模式(Abstract Factory),其是在工廠方法模式的

原创 Unix哲學

01. 模塊原則:使用簡潔的接口拼合簡單的部件。  02. 清晰原則:清晰勝於機巧。  03. 組合原則:設計時考慮拼接組合。  04. 分離原則:策略同機制分離,接口同引擎分離。  05. 簡潔原則:設計要簡潔,複雜度能低則低。  06

原创 大話設計模式C++版——觀察者模式

   觀察者模式是一種類似於消息分發的模式,用於一個任務需要被多個對象監聽的場景,或者成員對象需要反向通知類對象的情況,是一種很有用的設計模式。    這裏以大話設計模式中的例子爲例,辦公室員工A、B、C在看股票看電影,這時老闆回來了,被

原创 大話設計模式C++版——建造者模式

    日常做菜的過程中,經常會有忘記放鹽或者放2次鹽的經歷,最後導致好好的一盤菜讓大家無從下口。這個時候就需要用到建造者模式來規範炒菜的過程,來保證每一道菜都會經歷加油、放食物、放鹽、放味精這4道基本的工序,同時保證每道工序不會重複。

原创 COM中的線程模式

Choosing the threading model for an object depends on the object's function. An object that does extensive I/O migh

原创 一次Mutex死鎖的原因探究

1、現象    最近項目中調出一個bug,某些時候程序會卡死不動,用windbg進行加載後用 ~*kb 命令列出所有的線程棧調用,發現有多個線程調用 WaitForMultipleObjects 在等待同一個內核對象:    輸入 !ha

原创 大話設計模式C++版——工廠方法模式

         工廠方法模式是以簡單工廠模式爲基礎的,如果未了解簡單工廠模式的同學可先瀏覽《大話設計模式C++版——簡單工廠模式》。在簡單工廠模式中,提到過簡單工廠模式的缺陷,即違背了開發—封閉原則,其主要原因是由於switch的判斷結