Короче говоря, мне интересно, есть ли такой тип auto_ptr для массивов. Я знаю, что смогу катиться самостоятельно, я просто убедился, что там уже ничего нет.
Я знаю и об векторах. однако я не думаю, что могу их использовать. Я использую несколько Windows API/SDK, таких как SDK Windows Media, Direct Show API, который позволяет вернуть некоторые структуры для вызова функции, которая дважды занимает указатель и размер. Первый раз, когда NULL передается в качестве указателя, чтобы вернуть размер структуры, которую я должен выделить, чтобы получить данные, которые я ищу. Например:
CComQIPtr<IWMMediaProps> pProps(m_pStreamConfig);
DWORD cbType = 0;
WM_MEDIA_TYPE *pType = NULL;
hr = pProps->GetMediaType(NULL, &cbType);
CHECK_HR(hr);
pType = (WM_MEDIA_TYPE*)new BYTE[cbType]; // Would like to use auto_ptr instread
hr = pProps->GetMediaType(pType, &cbType);
CHECK_HR(hr);
// ... do some stuff
delete[] pType;
Так как cbType обычно возвращается больше sizeof (WM_MEDIA_TYPE) из-за того, что факт имеет указатель на другую структуру в нем, я не могу просто выделить объекты WM_MEDIA_TYPE. Есть ли что-нибудь подобное?