URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9386
[ Назад ]

Исходное сообщение
"shared_ptr custom deleter"

Отправлено handler2006 , 15-Фев-12 11:37 
Здравствуйте!
Мы имеем возможность написать:
shared_ptr<int> p(new int, &free);

Но конструкция:
shared_ptr<int> p(VirtualAlloc(...), &VirtualFree(...));
Дает ошибку компиляции.

Вопрос:
Как освободить память во втором случае?


Содержание

Сообщения в этом обсуждении
"shared_ptr custom deleter"
Отправлено anonymous , 16-Фев-12 12:16 
> Здравствуйте!
> Мы имеем возможность написать:
> shared_ptr<int> p(new int, &free);
> Но конструкция:
> shared_ptr<int> p(VirtualAlloc(...), &VirtualFree(...));
> Дает ошибку компиляции.
> Вопрос:
> Как освободить память во втором случае?

shared_ptr<int> p(VirtualAlloc(...), &VirtualFree); ?


"shared_ptr custom deleter"
Отправлено handler2006 , 16-Фев-12 12:28 

> shared_ptr<int> p(VirtualAlloc(...), &VirtualFree); ?

В таком случае получаем ошибку приведения типов во втором аргументе.
Второй функции точно нужно передавать параметры.
Есть способ сделать это через:


shared_ptr<int> p(VirtualAlloc(), bind(VirtualFree, p));

Но я пока еще не нашел правильного решения, которое бы удовлетворило компилятор