malloc関数を使用することにより指定したサイズ(バイト)のメモリを取得することができます。
以下にC言語のサンプルソースと実行例を記します。
malloc関数の書式などを以下に記します。
#include <stdlib.h>
void *malloc(size_t size);
以下にmallocを使ったCサンプルコードを記します。
サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリサイズをmallocで取得しています。
取得したメモリにコピー後、tolower関数で小文字に変換しています。
表示後、free関数にてmallocで取得したメモリを解放しています。
malloc.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); for (i=0; i<strlen(p); i++) { p[i] = (char)tolower(p[i]); } printf("%s", src); printf("%s", p); if (p != NULL) { free(p); p = NULL; } return 0; }
上記Cサンプルコードをコンパイルし実行した結果です。
$ gcc malloc.c -o malloc $ ./malloc HELLO WORLD! hello world!
mallocで+1している理由は、文字列の終端のNULLが格納されるエリア(1バイト)を追加しています。
以上、mallocによる動的メモリの取得のサンプルコードでした。