Я ищу способ автоматического освобождения массива wchar_t
s - что-то вроде автоматического указателя (я не очень знаком с std :: auto_ptr, но я думаю, что он не может быть использован для массивов).
Код, который у меня сейчас есть, таков:
/* volume is of type wstring,
* hr is of type HRESULT,
* VSS_PWSZ equals wchar_t*
*/
VSS_PWSZ pwszVolume = new wchar_t[volume.size() + 1];
std::copy(volume.begin(), volume.end(), &pwszVolume);
pwszVolume[volume.size()] = 0;
hr = pDiffMgmt->QueryDiffAreasOnVolume(pwszVolume, &pEnumMgmt);
delete[] pwszVolume;
pwszVolume = NULL;
Я действительно не понимаю, почему эта глупая функция не может взять const wchar_t*
, иначе я мог бы просто передать volume.c_str()
.
Пока все хорошо, я думаю, что мой код решает эту проблему, но теперь управление памятью усложняется: мне пришлось бы дублировать код delete[]
для учета исключений, которые могут быть сгенерированы (а я этого не делаю хочу поймать на этом этапе.)
Есть ли способ, которым я могу получить pwszVolume
для автоматического освобождения при оставлении текущей области?