我需要編寫一個函數來檢索和處理一些數據。該數據可以用幾種方式來分配(在數據段,在堆上,在一個共享內存段等):C++:unique_ptr with unknow deleter
T *data;
if(global) data = &d;
if(heap) data = new T [ size ];
if(shm) data = (T*) shmat(id, 0, 0);
// processing data ...
由於data
可以動態地分配,我倒是覺得,最好的辦法處理它是使用unique_ptr
或其他類型的智能指針。但它並不總是動態分配的:我需要在運行時選擇unique_ptr
的刪除程序,但這不可能。
我該如何定義和處理data
?
有趣的相關閱讀:[走向更美好的分配器模型(http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1330701318745&ved=0CCYQFjAA&url=http%3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22 %2Fwg21%2Fdocs%2Fpapers%2F2005%2Fn1850.pdf&EI = A-RQT-DXBeXA0QGJqqXFDQ&USG = AFQjCNFS07GH0af749GIyOIjE-QCC-K7dw&SIG2 = hBWQcfg-EUOmH2d8UI5UuQ)。這是一種特殊情況,刪除程序的類型屬於類型的一部分,通過一個函數破壞了具有不同刪除程序類型的'unique_ptr'的使用...我的推薦:在刪除程序中執行類型刪除時使用'shared_ptr'。 .. – 2012-03-02 15:18:33