1

D3DFORMAT *arr = NULL;

这是对应该保存 D3DFORMAT 类型值的数组的引用。如何为这个大小由变量定义的数组分配内存

unsigned int arrsize;

我应该以字节为单位计算数组的大小= sizeof(D3DFORMAT)*arrsize;

而不是使用 memset().?

如果我错了,请纠正我。或者,如果 tere 是一种更清洁、更好的 C++ 方法来执行此操作。?

提前。谢谢

4

2 回答 2

3

“更干净更好的 C++ 方法”是使用 std::vector

unsigned int arrsize = 10;
std::vector <D3DFORMAT> array (arrsize );

将其投射到void*

void* p = (void*)(&array[0]);

您还希望您的值默认为 0,因此只需向构造函数添加一个参数

unsigned int arrsize = 10;
std::vector <D3DFORMAT> array (arrsize, 0);
于 2012-11-01T14:01:10.327 回答
3

像这样

D3DFORMAT* arr = new D3DFORMAT[arrsize];

memset可能会起作用,或者它可能会使您的程序崩溃。这一切都取决于如何D3DFORMAT定义。你能发布 的定义D3DFORMAT吗?

刚刚注意到您要求更好的方法。更好的方法很可能是

std::vector<D3DFORMAT> arr(arrsize);

但同样,它确实取决于如何D3DFORMAT定义。

于 2012-11-01T14:01:11.867 回答