>> C言語関数一覧トップに戻る
今回はC言語のmalloc関数ついて説明します。
malloc関数は指定したバイト分のメモリを確保する関数です。
■書式
#include <stdlib.h>
void *malloc(size_t size);
引数には確保するバイトを指定します。
戻り値は確保したメモリのポインタがvoid型で返ってきます。
失敗した場合はNULLが返ります。
戻り値のポインタはvoid型で返ってくるので、
その後利用するデータ型にキャスト(変換)してやる必要があります。
キャストは関数の前に、
(型)
と書きます。
char型のポインタにキャストするなら、
(char*)
int型のポインタにキャストするなら、
(int*)
という風になります。
■サンプルコード
文字列を入力してください。
ABCDEFG
入力した文字は→ABCDEFG
上記のコードではmallocでメモリを100バイト確保して、戻り値のポインタをchar型のポインタにキャストして、
ポインタ変数chで受け取っています。
その後、標準入力から文字列を受け取ってch変数に格納して表示しています。
ちゃんと表示できているので、問題なくメモリが確保できていることがわかります。
確保したメモリは最後に必ず解放する必要があります。
free関数で確保したポインタを指定し、解放しています。
>> 【C言語 free 使い方】に進む
>> C言語関数一覧トップに戻る
C言語 malloc 使い方
malloc関数は指定したバイト分のメモリを確保する関数です。
■書式
#include <stdlib.h>
void *malloc(size_t size);
引数には確保するバイトを指定します。
戻り値は確保したメモリのポインタがvoid型で返ってきます。
失敗した場合はNULLが返ります。
戻り値のポインタはvoid型で返ってくるので、
その後利用するデータ型にキャスト(変換)してやる必要があります。
キャストは関数の前に、
(型)
と書きます。
char型のポインタにキャストするなら、
(char*)
int型のポインタにキャストするなら、
(int*)
という風になります。
■サンプルコード
#include <stdio.h> #include <stdlib.h> int main(void) { char *ch; //確保したメモリをchar型ポインタにキャスト ch = (char*)malloc(100); puts("文字列を入力してください。"); gets(ch); printf("入力した文字は→%s\n",ch); free(ch); return 0; }■実行結果
文字列を入力してください。
ABCDEFG
入力した文字は→ABCDEFG
上記のコードではmallocでメモリを100バイト確保して、戻り値のポインタをchar型のポインタにキャストして、
ポインタ変数chで受け取っています。
その後、標準入力から文字列を受け取ってch変数に格納して表示しています。
ちゃんと表示できているので、問題なくメモリが確保できていることがわかります。
確保したメモリは最後に必ず解放する必要があります。
free関数で確保したポインタを指定し、解放しています。
>> 【C言語 free 使い方】に進む
>> C言語関数一覧トップに戻る