這可能是不可能的,但我想我會問...跟蹤自動變量生存期?
有沒有任何人可以想到的方式來跟蹤是否刪除了自動變量而不修改變量本身的類?例如,考慮這樣的代碼:
const char* pStringBuffer;
{
std::string sString("foo");
pStringBuffer = sString.c_str();
}
顯然,塊之後,pStringBuffer是懸空指針其可以是或可以不是有效的。我想要的是一種包含pStringBuffer(包含const char *的轉換運算符)的包裝類的方法,但聲明它所引用的變量仍然有效。通過改變引用變量的類型,我當然可以做到這一點(例如boost shared_ptr/weak_ptr),但我希望能夠在不對引用類型施加限制的情況下做到這一點。
的幾點思考:
- 我可能需要更改分配語法包括
- 我也許可以看看堆棧指針來檢測,如果引用的變量(這是罰款)我包裝類被分配的「晚於」被引用的類,但這看起來很拙劣而不標準(C++沒有定義堆棧行爲)。它可以工作,但。
想法/輝煌的解決方案?你可能會發現有用
是的; Purify會做類似的事情,當它真正起作用時,不會在運行時損壞應用程序。不幸的是,它是一個運行時應用程序,需要花錢,並且在任何應用程序接近商業複雜性時都無法使用。 = / – Nick 2008-10-16 23:39:56