Tóm lại, tôi tự hỏi nếu có một kiểu auto_ptr giống như cho mảng. Tôi biết tôi có thể tự mình cuộn, tôi chỉ đảm bảo rằng không có thứ gì đó ở ngoài kia.auto_ptr cho mảng
Tôi cũng biết về vectơ. tuy nhiên tôi không nghĩ mình có thể sử dụng chúng. Tôi đang sử dụng một số API/SDK của Windows như Windows Media SDK, API hiển thị trực tiếp để lấy lại một số cấu trúc để gọi hàm có con trỏ và kích thước hai lần. Lần đầu tiên đi qua NULL là con trỏ để lấy lại kích thước của cấu trúc mà tôi phải phân bổ để nhận dữ liệu mà tôi đang tìm kiếm. Ví dụ:
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;
Kể từ cbType thường trở lại lớn hơn sizeof (WM_MEDIA_TYPE) do thực tế là có một con trỏ đến một cấu trúc trong nó, tôi không thể chỉ phân bổ đối tượng WM_MEDIA_TYPE. Có cái gì như thế này không?
Yup. Vectơ, không phải mảng. –
Các vectơ được bảo đảm là các khối liên tiếp của bộ nhớ? – heavyd
@Heavyd Có - tiêu chuẩn C++ đảm bảo điều này. –