人工生命Tierraの作成等についてのブログ

人工生命Tierraや他の技術的な事柄、また日々の出来事などについても書いていきます。

畳み込みニューラルネットワーク(CNN)、C++、配列サイズ動的、メモリ動的確保

・配列の要素数の宣言に変数を使いたい。
 下記のように
  int num = 5;
  int a[num];
 ・C++では上記のようにはできない。
・new演算子を使う方法がある。
  int num = 5;
  int* a = new int[num];
 ・num個のint型の配列を
  メモリに割り当てて
  そのメモリの先頭のアドレスを
  ポインタ変数aに入れる。
 ・new演算子を使った後はdeleteで消さなければならない。
  ・newで確保したメモリはいつまでも(プログラムが終わるまで)残ってしまうため。
   int num = 5;
   int* a = new int[num];
   delete[] a;

 

変数や配列の動的な生成

http://ext-web.edu.sgu.ac.jp/koike/semi/VC2005/c16.html

 

・2次元配列を同様にしようとしたがエラーとなる。

  int num1 = 5;

  int num2 = 5;

  int** a = new int[num1][num2]; //NG

・newで確保できるのは1次元までなので、1次元ずつ確保していく。

  int num1 = 5;

  int num2 = 5;

  int** a = new int*[num1];

  for(int i=0; i<num1; i++) a[i] = new int[num2];

・削除も1行ずつ。

  for(int i=0; i<num1; i++) delete[] a[i];

  delete[] a;

[C++] new による多次元配列の動的作成 | 旅の記録