Cの大きな特徴として、ポインタによるメモリハンドルが可能ということがあります
簡単のため 1列のDimensionでのメモリのallocate, freeについて解説します。
下記は5の大きさを持った1列のDimensionでのCプログラムでです。
#include <malloc.h>
#include <stdlib.h>
double
*double_dimension_sample;
int
dimension_size = 5;
double_dimension_sample = (double
*)malloc(sizeof(double) * dimension_size);
double_dimension_sample[0] = 1.0;
for (int
i = 0; i < dimension_size; i++)
double_dimension_sample[i]
= double_dimension_sample[i-1] + 0.5;
if (double_dimension_sample)
free(double_dimension_sample);
次に2行3列を持った行列(Dimension)の場合での、メモリのallocate,
freeについて説明します。
2次元の行列の場合のCプログラムは以下の通りです。
#include <malloc.h>
#include <stdlib.h>
#define DIM_ROW 2
#define DIM_COL 3
double **A;
A =
(double **)(malloc (sizeof(double*) * DIM_ROW));
for (int i = 0; i < DIM_ROW; i++)
A[i]
= (double *)malloc(sizeof(double) * DIM_COL);
// omitted…
if (A) {
for (int i = 0;
i < DIM_ROW; i++) {
if
(A[i]) free(A[i]);
}
}
メモリを解放(free)する場合は、この定義の逆の順番で解放すること。
malloc
() について詳細に知りたい場合は、下記MSDN(Microsoft Developer Network)で参照できる
なぜメモリ ハンドリンングが必要なのでしょうか? メモリは有限で、アクセススピードがCPUと比べて遅いからです。
参照) http://www.cms-initiative.jp/ja/events/CMSI_events/2013-haishin-docs/0530-nakata
ちなみにC++言語では、以下のようになります。
次のページ →
C言語での特徴 - dimension
「有限要素法における平面トラスの解析」プログラムをC言語で書いてみる : 目次 |
0 件のコメント:
コメントを投稿