C言語のmalloc関数とは?動的メモリ確保の基本と使い方を解説
malloc()関数とは
malloc()関数は「memory allocation(メモリ割り当て)」の略称で、C言語においてメモリブロックを動的に確保するための標準ライブラリ関数です。
この関数は、指定されたサイズのメモリ領域を確保し、その先頭アドレスを指すポインタを返します。メモリ確保に失敗した場合はNULLが返されます。
注意点として、malloc()で確保されたメモリ領域は初期化されていないため、ゴミ値(不定な値)が含まれています。必要に応じてmemset()関数などで初期化してから使用しましょう。また、戻り値のポインタはvoid型(void*)であるため、実際に使用する際は目的のデータ型へキャストします。
構文
ptr = (castType*) malloc(size);
size引数には、確保したいメモリのバイト数を指定します。一般的にはsizeof演算子と組み合わせ、「要素数 × sizeof(型)」の形式で指定します。
malloc()関数を使用するには、ヘッダーファイル<stdlib.h>をインクルードする必要があります。
使用例
以下は、malloc()関数を使って文字列用のメモリを動的に確保するサンプルプログラムです。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char *MemoryAlloc;
/* メモリを動的に確保 */
MemoryAlloc = malloc( 15 * sizeof(char) );
if(MemoryAlloc == NULL){
printf("要求されたメモリを確保できませんでした\n");
}else{
strcpy( MemoryAlloc, "TutorialsPoint");
}
printf("動的に確保されたメモリの内容 : %s\n", MemoryAlloc);
free(MemoryAlloc);
}実行結果
上記のプログラムを実行すると、次のような出力が得られます。
動的に確保されたメモリの内容: TutorialsPoint
押さえておきたいポイント
・malloc()はヒープ領域から指定したサイズのメモリを動的に確保する
・確保されたメモリは初期化されておらず、ゴミ値が含まれる
・戻り値はvoid*型なので、適切な型にキャストして使用する
・確保に失敗するとNULLが返るため、必ずNULLチェックを行う
・使い終わったらfree()関数でメモリを解放し、メモリリークを防止する
-
C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説
C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1
-
C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説
C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,