BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ オブジェクトを動的に生成するにはどうすればよいでしょうか。

 オブジェクトを動的に生成するためには、必要になった時点でcalloc関数あるいはmalloc関数を呼び出します。
 たとえば、一つのint型オブジェクトを生成するには、以下のようにします。

ptr = calloc(1, sizeof(int));

これで一般にヒープ領域と呼ばれる空き域から、int型オブジェクト1個分の記憶域が確保されます。ptrはその領域を指していますから、その領域は*ptrでアクセスすることができます。たとえば、

*ptr = 100; /* *ptrに100を代入 */ x = *ptr + 10; /* *ptrに10加えた値をxに代入 */ scanf("%d", ptr); /* 標準入力から10進整数を読み込んでptrに格納 */ printf("%d", *ptr); /* 標準出力に*ptrの値を書き出す */

なお、確保したオブジェクトが不要になった場合は、free関数で解放しましょう。以下のようにします。

free(*ptr);


■ 根拠 ■
標準C §7.10.3 Memory managemnet functions
標準C99 §7.20.3 Memory managemnet functions
標準C++ §20.4 Memory

戻る

BohYoh.comロゴ