畳み込みニューラルネットワーク(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;