「ヘッダー」が正しい単語であるかどうかわからないので、修正してください。WDKのC++での配列のヘッダーサイズ
私はまずメモリを割り当てて、オーバーロードされた(配置)new []演算子を使ってクラスオブジェクトの配列(MyClassなど)を初期化しようとしています。
と言うと、MyClassオブジェクトのサイズは0x68で、0x20の配列が必要です。したがって、合計サイズはsizeof(MyClass)* 0x20 = 0xD00です。
は今、私は私のオーバーロードされた配置の新しい[]演算子を使用する場合:新しい[]演算子に
pArr = new(pAllocatedMem)MyClass[0x20];
コンパイラ返さsize_tのは、実際に0xD08です。余分な8バイトがあります。その8バイトの値を見ると、配列のサイズ(ここでは0x20)を格納するために使用されます。
これは、私が使用できるWDKのヘッダサイズとは何ですか?このサイズの変更はコンパイラやそれ以外のものによって異なりますか?
このVCのオーバーヘッドが常に定義されているかどうか知っていますか? – Andrew
@Andrew:あなたはソースを持っています。しかし私はそれが公式だとは思わない。リリース間で変更される可能性があります。結局のところ、移植可能なコードはそれにも頼ることができないので、なぜVCはそれを文書化して利益を得るのでしょうか? – MSalters
@MSalters、**少なくとも私のプログラム(ドライバ)を実行する同じインスタンス内で、オーバーヘッドの保証は同じですか?**新しい[]配置を安全に使用できないようです。割り振られたメモリを解放すると、その不特定のオーバーヘッドが正しく説明されていない場合、BSOD(私はWindows上にあります)が発生します。私は削除の間にパラメータを渡す必要がありますが、delete []は追加の引数を取ることができません。新しい/ deleteの外部にメモリを割り当てると、このオーバーヘッドが発生します。 – Andrew