Мне нужно написать функцию для извлечения и обработки некоторых данных. Эти данные могут быть распределены по нескольким направлениям (в сегменте данных, в куче, на сегменте разделяемой памяти и так далее):C++: unique_ptr с 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 & е = А-RQT-DXBeXA0QGJqqXFDQ & USG = AFQjCNFS07GH0af749GIyOIjE-QCC-K7dw & Sig2 = hBWQcfg-EUOmH2d8UI5UuQ). Это частный случай, когда тип делетера, являющегося частью этого типа, нарушает использование 'unique_ptr' с разными типами дебетов с помощью одной функции ... Моя рекомендация: используйте' shared_ptr', поскольку он выполняет стирание стилей на делетере. .. –