【发布时间】:2010-11-05 21:33:31
【问题描述】:
简而言之,我想知道数组是否有类似 auto_ptr 的类型。我知道我可以自己推出,我只是确保那里没有任何东西。
我也知道向量。但是我不认为我可以使用它们。我正在使用几个 Windows API/SDK,例如 Windows Media SDK、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 对象。有这样的东西吗?
【问题讨论】:
标签: c++ arrays memory-management