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による動的メモリの取得のサンプルコードでした。