メモリ/動的メモリサイズを拡張する・realloc
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 動的メモリサイズを拡張する・realloc [#j3a8b1a9]
malloc関数を使用することにより指定したサイズ(バイト)のメ...
その後、取得したメモリサイズを拡張したい場合は、realloc関...
以下にC言語のサンプルソースと実行例を記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#f86bbdf6]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* realloc書式など [#r87bea36]
realloc関数の書式などを以下に記します。
-インクルードが必要なファイル
#include <stdlib.h>
-reallocの書式
void *realloc(void *ptr, size_t size);
-戻り値~
拡張したあとのメモリの先頭アドレス
-引数~
1つ目: mallocで取得済みのポインタ~
2つ目: 取得するサイズ
* reallocのCサンプルコード [#l9b996ac]
以下にreallocを使ったCサンプルコードを記します。~
最初に5バイト+1バイト(NULL)のエリアを確保し、12345をstrcp...
次に更に5バイト拡張し、67890をstrcatを使って文字列連結し...
表示後、free関数にてmalloc,reallocで取得したメモリを解放...
&ref(realloc.c); (改行コードLF)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char *p = NULL;
p = malloc(5+1);
if (p == NULL) {
perror("malloc() error!");
exit(EXIT_FAILURE);
}
strcpy(p, "12345");
printf("p = %s\n", p);
p = realloc(p,10+1);
strcat(p, "67890");
printf("p = %s\n", p);
return 0;
}
上記Cサンプルコードをコンパイルし実行した結果です。
$ gcc realloc.c -o realloc
$ ./realloc
p = 12345
p = 1234567890
サンプルソースで+1している理由は、文字列の終端のNULLが格...
以上、reallocによる動的メモリの取得のサンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
終了行:
#navi(../)
* 動的メモリサイズを拡張する・realloc [#j3a8b1a9]
malloc関数を使用することにより指定したサイズ(バイト)のメ...
その後、取得したメモリサイズを拡張したい場合は、realloc関...
以下にC言語のサンプルソースと実行例を記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#f86bbdf6]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* realloc書式など [#r87bea36]
realloc関数の書式などを以下に記します。
-インクルードが必要なファイル
#include <stdlib.h>
-reallocの書式
void *realloc(void *ptr, size_t size);
-戻り値~
拡張したあとのメモリの先頭アドレス
-引数~
1つ目: mallocで取得済みのポインタ~
2つ目: 取得するサイズ
* reallocのCサンプルコード [#l9b996ac]
以下にreallocを使ったCサンプルコードを記します。~
最初に5バイト+1バイト(NULL)のエリアを確保し、12345をstrcp...
次に更に5バイト拡張し、67890をstrcatを使って文字列連結し...
表示後、free関数にてmalloc,reallocで取得したメモリを解放...
&ref(realloc.c); (改行コードLF)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char *p = NULL;
p = malloc(5+1);
if (p == NULL) {
perror("malloc() error!");
exit(EXIT_FAILURE);
}
strcpy(p, "12345");
printf("p = %s\n", p);
p = realloc(p,10+1);
strcat(p, "67890");
printf("p = %s\n", p);
return 0;
}
上記Cサンプルコードをコンパイルし実行した結果です。
$ gcc realloc.c -o realloc
$ ./realloc
p = 12345
p = 1234567890
サンプルソースで+1している理由は、文字列の終端のNULLが格...
以上、reallocによる動的メモリの取得のサンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
ページ名: