メモリ操作系

C言語

はじめに

動的な領域確保方法を知っていると
作れるプログラムの幅が広がります。
ここれは、動的な領域確保
領域のクリア及び解放法を記載します。

関数一覧

動的な領域確保

書式:
#include <stdlib.h>
void *malloc(size_t size);

パラメータ:size_t size 確保するバイト数
戻り値  :成功時:確保した領域のポインター
      失敗時:NULL
説明:
malloc関数はsize分のバイト数を割り当てます。
戻り値としては、確保した領域のポインターを返します。
確保に失敗した場合は、NULLを返す。

動的な領域解放

書式:
#include <stdlib.h>
void free(void *ptr);
パラメータ:ポインターptrが指すメモリー空間を開放する。

説明:
基本的にはmallocで取得したポインタを設定して開放する。
解放忘れなどの場合は、領域確保されたままなので
「メモリリーク」が起きてプロセスが落ちます。

指定したバイト数でメモリー領域にセットする

書式:
#include <string.h> 
void *memset(void *s, int c, size_t n);
パラメータ:
      void *s:セットする領域
      int c   :セットする値
            size_t n:設定するバイト数

説明:
セットする領域(*s)にcをnバイト数設定する。

メモリー領域をコピー

書籍:
#include <string.h> 
void *memcpy(void *dest, const void *src, size_t n); 
パラメータ:
      void *dest   :コピー先の領域
      const void *src:コピー元の領域
            size_t n     :コピーするバイト数

説明:
コピー元のメモリー領域 src の先頭 n バイトを 
コピー先のメモリー領域 dest にコピーする。
コピー元の領域と コピー先の領域が重なってはならない。

サンプル

領域確保~解放までのサンプル

コメント

タイトルとURLをコピーしました