Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - メモリ操作ライブラリ」です。
malloc関数は指定した大きさのメモリ領域を確保して、その先頭アドレスを返り値として返します。返り値の型名はvoid型ですので、このままでは使えません。通常、型変換(キャスト)演算子で型変換して使用します。(具体的には例題をご覧ください)
形式 | #include <stdlib.h> void *malloc(size_t size); |
---|---|
返り値 | 確保したメモリ領域の先頭アドレスを返します。エラーの場合はNULLを返します。 |
引数 |
|
calloc関数はmalloc関数と同じく、指定した大きさのメモリ領域を確保して、その先頭アドレスを返り値として返します。malloc関数との相違は確保した領域を0(全ビット0)でクリアする事です。
形式 | #include <stdlib.h> void *calloc(size_t nmemb, size_t size); |
---|---|
返り値 | 確保したメモリ領域の先頭アドレスを返します。エラーの場合はNULLを返します。 |
引数 |
|
realloc関数はcalloc関数やmalloc関数で確保したメモリ領域の大きさを変更して、その先頭アドレスを返り値として返します。領域を大きくした場合は元の内容はそのまま残っています。なお、領域が別の場所に移動する場合もありますので注意してください。(第1引数のptrの値と戻り値は一致するとは限りません)
形式 | #include <stdlib.h> void *realloc(void *ptr, size_t size); |
---|---|
返り値 | 変更後のメモリ領域の先頭アドレスを返します。エラーの場合はNULLを返します。なお、エラーの場合は指定した領域は元のままです。 |
引数 |
|
free関数はcalloc関数やmalloc関数で確保したメモリ領域を開放します。
形式 | #include <stdlib.h> void free(void *ptr); |
---|---|
返り値 | ありません。 |
引数 |
|
実行時引数で指定したファイルの中のタブ文字を半角スペースに置換した結果を表示します。ファイルの内容はmalloc関数で確保したメモリ領域に格納しますが、領域が一杯になった場合はrealloc関数で拡張します。領域の最初の大きさは100バイトで、一杯になった場合は100バイトずつ拡張します。
$ wc ./DATA/ex14_2_5.dat 8 19 102 ./DATA/ex14_2_5.dat ← ex14_2_5.datの容量は102バイトです $ cat ./DATA/ex14_2_5.dat main() { short bango = 12; int nenrei; float taijyu = 65.5; double sintyo; char ketueki = 'A'; } $ $ cat -t ex14_2_5.dat ← -tはタブ文字を見えるように(^I)表示するオプションです main() { ^Ishort^Ibango^I=^I12; ^Iint^Inenrei; ^Ifloat^Itaijyu^I=^I65.5; ^Idouble^Isintyo; ^Ichar^Iketueki^I=^I'A'; } $ $ ./ex14_6_1.prg ./DATA/ex14_2_5.dat main() { short bango = 12; int nenrei; float taijyu = 65.5; double sintyo; char ketueki = 'A'; } $