メモリ/動的にメモリを取得する・malloc
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 動的にメモリを取得する・malloc [#o9e16b89]
malloc関数を使用することにより指定したサイズ(バイト)のメ...
以下にC言語のサンプルソースと実行例を記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#j1e71754]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[malloc,calloc,reallocで取得したメモリを解放する・free>...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* malloc書式など [#ib734a76]
malloc関数の書式などを以下に記します。
-インクルードが必要なファイル
#include <stdlib.h>
-mallocの書式
void *malloc(size_t size);
-戻り値~
取得したメモリの先頭アドレス
-引数~
取得するメモリサイズ(バイト)
* mallocのCサンプルコード [#ca9efebd]
以下にmallocを使ったCサンプルコードを記します。~
サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリ...
取得したメモリにコピー後、tolower関数で小文字に変換してい...
表示後、free関数にてmallocで取得したメモリを解放していま...
&ref(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が格納される...
以上、mallocによる動的メモリの取得のサンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
終了行:
#navi(../)
* 動的にメモリを取得する・malloc [#o9e16b89]
malloc関数を使用することにより指定したサイズ(バイト)のメ...
以下にC言語のサンプルソースと実行例を記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#j1e71754]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[malloc,calloc,reallocで取得したメモリを解放する・free>...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* malloc書式など [#ib734a76]
malloc関数の書式などを以下に記します。
-インクルードが必要なファイル
#include <stdlib.h>
-mallocの書式
void *malloc(size_t size);
-戻り値~
取得したメモリの先頭アドレス
-引数~
取得するメモリサイズ(バイト)
* mallocのCサンプルコード [#ca9efebd]
以下にmallocを使ったCサンプルコードを記します。~
サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリ...
取得したメモリにコピー後、tolower関数で小文字に変換してい...
表示後、free関数にてmallocで取得したメモリを解放していま...
&ref(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が格納される...
以上、mallocによる動的メモリの取得のサンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
ページ名: