メモリ/動的にメモリを取得する・malloc
の編集
Top
/
メモリ
/
動的にメモリを取得する・malloc
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * 動的にメモリを取得する・malloc [#o9e16b89] malloc関数を使用することにより指定したサイズ(バイト)のメモリを取得することができます。~ 以下にC言語のサンプルソースと実行例を記します。 #contents #htmlinsert(c_ads_top.html) *関連記事 [#j1e71754] -[[メモリの内容を指定した値で初期化する・memset>メモリ/メモリの内容を指定した値で初期化する・memset]] -[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピーする・memcpy]] -[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構造体の内容をコピーする・memcpyは使わない!]] -[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・memcmp]] -[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取得する・malloc]] -[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリサイズを拡張する・realloc]] -[[malloc,calloc,reallocで取得したメモリを解放する・free>メモリ/malloc,calloc,reallocで取得したメモリを解放する・free]] -[[指定した文字数分コピーする・memmove>メモリ/指定した文字数分コピーする・memmove]] -[[指定したバイトの指定個数分メモリを確保する・calloc>メモリ/指定したバイトの指定個数分メモリを確保する・calloc]] * malloc書式など [#ib734a76] malloc関数の書式などを以下に記します。 -インクルードが必要なファイル #include <stdlib.h> -mallocの書式 void *malloc(size_t size); -戻り値~ 取得したメモリの先頭アドレス -引数~ 取得するメモリサイズ(バイト) * mallocのCサンプルコード [#ca9efebd] 以下にmallocを使ったCサンプルコードを記します。~ サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリサイズをmallocで取得しています。~ 取得したメモリにコピー後、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が格納されるエリア(1バイト)を追加しています。~ 以上、mallocによる動的メモリの取得のサンプルコードでした。 #htmlinsert(c_ads_btm.html)
タイムスタンプを変更しない
#navi(../) * 動的にメモリを取得する・malloc [#o9e16b89] malloc関数を使用することにより指定したサイズ(バイト)のメモリを取得することができます。~ 以下にC言語のサンプルソースと実行例を記します。 #contents #htmlinsert(c_ads_top.html) *関連記事 [#j1e71754] -[[メモリの内容を指定した値で初期化する・memset>メモリ/メモリの内容を指定した値で初期化する・memset]] -[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピーする・memcpy]] -[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構造体の内容をコピーする・memcpyは使わない!]] -[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・memcmp]] -[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取得する・malloc]] -[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリサイズを拡張する・realloc]] -[[malloc,calloc,reallocで取得したメモリを解放する・free>メモリ/malloc,calloc,reallocで取得したメモリを解放する・free]] -[[指定した文字数分コピーする・memmove>メモリ/指定した文字数分コピーする・memmove]] -[[指定したバイトの指定個数分メモリを確保する・calloc>メモリ/指定したバイトの指定個数分メモリを確保する・calloc]] * malloc書式など [#ib734a76] malloc関数の書式などを以下に記します。 -インクルードが必要なファイル #include <stdlib.h> -mallocの書式 void *malloc(size_t size); -戻り値~ 取得したメモリの先頭アドレス -引数~ 取得するメモリサイズ(バイト) * mallocのCサンプルコード [#ca9efebd] 以下にmallocを使ったCサンプルコードを記します。~ サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリサイズをmallocで取得しています。~ 取得したメモリにコピー後、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が格納されるエリア(1バイト)を追加しています。~ 以上、mallocによる動的メモリの取得のサンプルコードでした。 #htmlinsert(c_ads_btm.html)
テキスト整形のルールを表示する
添付ファイル:
malloc.c
782件
[
詳細
]