1

D3DFORMAT *arr = NULL;

これは、D3DFORMAT 型付きの値を保持する配列への参照です。サイズが変数によって定義されるこの配列にメモリを割り当てるにはどうすればよいですか

unsigned int arrsize;

= sizeof(D3DFORMAT)*arrsize;として配列のサイズをバイト単位で計算する必要があります。

そして、memset() を使用するよりも??

私が間違っている場合は、私を修正してください。または、テレがこれを行うためのよりクリーンな C++ メソッドである場合。?

あらかじめ。ありがとう

4

2 に答える 2

3

「よりクリーンな C++ メソッド」は std::vector を使用することです

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

キャストするvoid*

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

また、デフォルトで値を 0 にしたいので、コンストラクターにパラメーターをもう 1 つ追加するだけです。

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 に答える