Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11741
Последний выпуск: 19.06.2015

unique_ptr и WriteFile

282
08 июня 2016 года
insane88
438 / / 13.12.2006
Всем привет.

Есть MS VS 2015 upd2, в которой выполняется такая примерно штука:
Код:
//выделение памяти
unique_ptr<void, some_deleter> p1(VirtualAlloc(NULL, some_size, MEM_COMMIT, PAGE_READWRITE), some_deleter_code);
unique_ptr<void, some_deleter> p2(VirtualAlloc(NULL, some_size, MEM_COMMIT, PAGE_READWRITE), some_deleter_code);

//заполнение буферов
p1.get()=some_data;
p2.get()=some_data;

//просто указатель на буфер
void* buf=NULL;

if(some_condition){
    buf=p1.get();
} else {
    buf=p2.get();
}

//запись в файл
if(WriteFile(some_file, buf, some_size, &dwBytesWritten, 0)){
    if(some_size != dwBytesWritten){
        return ERROR_SIZE;
    }
} else {
    return ERROR_WRITEFAIL;
}

return OK;
вот все это валится с ошибкой ERROR_WRITEFAIL. причем если я использую просто указатель вместо unique_ptr, все работает

подскажите плиз, в чем может быть проблема?
282
08 июня 2016 года
insane88
438 / / 13.12.2006
разобрался. проблема была в том, что unique_ptr p2 пропадал за область видимости. будьте осторожнее с {} и внимательно проверяйте код) тему можно закрыть.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог