C言語 標準関数 | 応用 | サンプル

標準関数
構文
応用

管理人

プライバシーポリシー


書式

#include <stdlib.h>

void * calloc( size_t times , size_t len );

■戻り値:
大きさlenの領域をtimes個、確保してその先頭アドレスを返す。失敗した場合はNULL(\0)を返す。

関連関数
説明

lenで指定された大きさの領域をtimes個、確保してその先頭アドレスを返す。確保した領域はNULLクリアされる。エラー時はNULLを返す。

確保した領域はfreeで開放しなければならないが、プログラム終了時であればOSが自動で開放する。

尚、lenにtimesを乗じた値でmallocする場合とでは、確保領域がNULLクリアされる機能を除いて同じである。

一般的に、lenには変数型や構造体のサイズ、timesにはその個数を指定することが多い。

サンプル

#include <stdlib.h>

main() {

  int * ptr;
  int data[] = { 1 , 2 , 3 };

  /* 領域を確保 */
  ptr = ( int * )calloc( sizeof( int ) , 3 );
  if( ptr == NULL ) {
    printf( "メモリ確保エラー\n" );
    return -1;
  }

  /* 確保領域にデータを設定 */
  ptr[0] = data[0];
  ptr[1] = data[1];
  ptr[2] = data[2];

  /* 設定したデータを確認 */
  printf( "ptr[0]=%d\n" , ptr[0] );/* 1 */
  printf( "ptr[1]=%d\n" , ptr[1] );/* 2 */
  printf( "ptr[2]=%d\n" , ptr[2] );/* 3 */

  /* データ設定はこのようにもできる */
  *( ptr + 0 ) = 4;
  *( ptr + 1 ) = 5;
  *( ptr + 2 ) = 6;

  /* 設定したデータを確認 */
  printf( "*( ptr + 0 )=%d\n" , *( ptr + 0 ));/* 4 */
  printf( "*( ptr + 1 )=%d\n" , *( ptr + 1 ));/* 5 */
  printf( "*( ptr + 2 )=%d\n" , *( ptr + 2 ));/* 6 */

  /* 確保した領域を開放 */
  free( ptr );

  return 0;
}

実行結果

ptr[0]=1
ptr[1]=2
ptr[2]=3
*( ptr + 0 )=4
*( ptr + 1 )=5
*( ptr + 2 )=6


Copyright © 2008-2015 http://hitorilife.com All Rights Reserved.