C++プログラマ キャスブログ
[C++]newで作成したオブジェクト配列の要素数 2014年12月02日21:23:12
newで作成した配列の要素数を取得することが可能です。 ただし、オブジェクトにデストラクタが実装されていることが条件です。 ※全てのC++コンパイラで利用できるか不明なので自己責任でお願いします。 VCとGCCではいけました。 以下サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <cstdio> // printfに必要なヘッダー class A { public: virtual ~A(){} // デストラクタ }; int main() { // デストラクタのあるオブジェクトの配列作成 A* a = new A[10]; // 配列の先頭アドレスの4バイト手前に要素数が入っています。 printf( "%d\n", *((int*)a-1) ); delete[] a; return 0; }
出力 10
配列の先頭アドレスの4バイト手前に要素数が入っていることが分かります。 これでdelete[]を行った時に全てのデストラクタを呼ぶ仕組みが実現できるわけですね。
カテゴリ

リンク
C++11のコードを
試すのに便利です。
http://ideone.com/

同人ゲームを
製作している知人
sorcery

にほんブログ村 IT技術ブログ C/C++へ
にほんブログ村


C++ ブログランキングへ

ゲームダウンロード DefenceTri