今回は、これら二つの方法を用いたプログラムを検討しました。
// array_static.c
#include<stdio.h> // printf
#define LENGTH 10
int main(void)
{
//配列の宣言と同時に、特定の大きさだけ仮想アドレス空間内に確保している。
int array[LENGTH];
int i;
for(i =0; i<LENGTH; i++)
{
array[i] = i * 3;
}
for(i = 0; i<LENGTH; i++)
{
printf("array[%d]=%d\n", i, array[i]);
}
}
// array_dynamic.c
#include<stdio.h> // printf
#include<stdlib.h> // malloc
#define LENGTH 10
int main(void){
int *array;
int i;
/*mallocにより(int型の大きさ)× LENGTHだけの値を与える。
戻り値は、mallcにより確保された領域の先頭のアドレスである。
*/
array = (int *) malloc (sizeof (int) * LENGTH);
for(i = 0; i < LENGTH; i++)
{
array[i] = i * 3;
}
for(i = 0; i < LENGTH; i++)
{
printf("array[%d]=%d\n", i, array[i]);
}
//確保したメモリ領域を開放。
free(array);
return 0;
}