我需要编写一个函数来检索和处理一些数据。该数据可以用几种方式来分配(在数据段,在堆上,在一个共享内存段等):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