unique_ptr и WriteFile
Есть 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;
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;
подскажите плиз, в чем может быть проблема?
разобрался. проблема была в том, что unique_ptr p2 пропадал за область видимости. будьте осторожнее с {} и внимательно проверяйте код) тему можно закрыть.