AllocArray2D

概要

動的に 2 次元配列を確保します。

プロトタイプ

void *AllocArray2D(int size2, int size1, int size0);

戻り値

確保した 2 次元配列へのポインタが返ります。

パラメータ

size2

2 次元配列の左側の要素数

size1

2 次元配列の右側の要素数

size0

配列の要素サイズ

解説

AllocArray2D 関数は、2 次元配列を動的に確保します。返されたポインタを使うと [size2][size1] の多次元配列として使うことができます。size0 には、sizeof(float) などデータ型のサイズを指定します。確保した配列は FreeArray2D 関数で解放しなければなりません。この関数の等価コードを以下に示します。

等価コード

void *AllocArray2D(int size2, int size1, int size0){
    void **adr2 = (void **)malloc(size2*sizeof(void *));
    void *adr1 = malloc(size2*size1*size0);
    int i, width1 = size1*size0;
    for(i = 0; i<size2; i++) adr2[i] = (char *)adr1+i*width1;
    return adr2;
}

プログラム例

/*
 *  このプログラムは array2d に float 型
 *  2 次元配列を割り当て、0.0f で初期化します。
 */
void main(){
    int sx = 64, sy = 48, x, y;
    float **array2d = (float **)AllocArray2D(sy, sx, sizeof(float));
    for(y = 0; y<sy; y++) for(x = 0; x<sx; x++) array2d[y][x] = 0.0f;
    FreeArray2D(array2d);
}

参照

FreeArray2D

▲SecTop | ▲PageTop
Copyright (c) 1999-2006 インターネット停留所