#navi(../)
* malloc,calloc,reallocで取得したメモリを解放する・free [#b31411c8]
malloc, calloc, reallocで取得した動的メモリを解放するには、free関数を使用します。~
取得したメモリを使い終わったら必ずfreeするようにしましょう。~
以下にmalloc, freeを使用したC言語サンプルソースを記します。

#contents
#htmlinsertpcsp(c-top.html,c-sp.html)

* 関連記事 [#a02e367b]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メモリの内容を指定した値で初期化する・memset]]
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピーする・memcpy]]
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構造体の内容をコピーする・memcpyは使わない!]]
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・memcmp]]
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取得する・malloc]]
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリサイズを拡張する・realloc]]
-[[malloc,calloc,reallocで取得したメモリを解放する・free>メモリ/malloc,calloc,reallocで取得したメモリを解放する・free]]

* free関数の書式など [#pd044c16]
以下にfree関数の書式等を記します。
-必要なインクルード
 #include <stdlib.h>
-書式
 void free(void *ptr);
-引数~
フリー(解放)するメモリのポインタ
-戻り値~
なし

* freeを使用したサンプルソース [#ze112205]
以下にfreeを使用したC言語サンプルソースを記します。
&ref(free.c); (改行コードLF)

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
 
 int main(void)
 {
     char *src = "HELLO WORLD!\n";
     char *p = NULL;
     int i;
 
     p = malloc(strlen(src)+1);
     if (p == NULL) {
         perror("malloc() error!");
         exit(EXIT_FAILURE);
     }
     strcpy(p,src);
 
     printf("%s", p);
 
     if (p != NULL) {
         free(p);
         p = NULL;
     }
 
     return 0;
 }

以下にコンパイルし実行した結果を記します。
 $ gcc free.c -o free
 $ ./free 
 HELLO WORLD!

以上、malloc, freeのサンプルソースでした。

#htmlinsertpcsp(c-btm.html,c-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS