ヘッダファイルします。#include <stdlib.h>に含ま
のmalloc()関数は、動的にメモリ空間を割り当てるために使用されます(動的なメモリ割り当てを理解していない場合は、以下を参照してください。C言語の動的メモリ割り当てと変数のストレージ・クラスを)、そのプロトタイプ:
void *型malloc(size_tのサイズ);
パラメータ説明]サイズがバイト(バイト)の重量に割り当てられるメモリ空間のサイズです。
[説明]関数のmalloc()は、ヒープ領域のデータを格納するための指定されたメモリサイズを割り当てます。このメモリ空間は、関数の実行が完了した後、それらの値が不明で初期化されません。あなたは同時に初期化されたメモリを割り当てたい場合は、使用 のcalloc() 関数を。
[戻り値]はNULLが返され、障害に対処し、正常に割り当てられたメモリへのポインタを返します。
場合やメモリスペースが適用されなくてもよいので、独立したアプリケーションが成功し、その後の操作であるかを決定する必要があります。
サイズが0の場合、戻り値はNULLであってもよいし、実装への標準ライブラリの実装によって異なり、あるいはないかもしれませんが、ポインタを再度参照するべきではありませんが返されます。
注意:関数の戻り値の型がvoid *型で、ボイドがそこには、戻り値ではありませんか、NULLポインタを返しますが、ポインタ型が不明で返すことを意味するものではありません。したがって、使用のmalloc()は通常、例えば、私たちが望むボイドポインタ型に変換するキャストを必要とされています。
1つ のchar *のPTR =(チャー *)のmalloc(10); // 文字を格納するために使用されるメモリ空間の10のバイトを割り当てます
動的なメモリ割り当ての例:
1 。1つの#include <stdio.hの> / * のprintf、scanfの、NULL * / 2 2の#include <STDLIB.H> / * のmalloc、無料、RAND、システム* / 3 。3 。4 。4 INT メイン() 。5 。5 { 6 6 INT N- I; 7。 7。 CHAR * バッファー; 8。 8。 9に。 9。 のprintf(" 文字列の長さを入力します" ); 10 10 scanfの(" %のD "、およびI); 11。 11 12であり、 12は バッファ=(チャー *)のmalloc(Iは、+ 1); // 最後の\ 0を含む文字列 13は、 13である IF((バッファ== NULL)終了。1); // 割り当てが成功であるか否かを判断する 14 14 15 15 // ランダム生成された文字列 16 16 のために(N = 0 - ; N- <I N ++ ) 。17 。17 バッファー[N- = RAND()%26である + ' A ' ; 18は、 18である 緩衝液[I] = ' \ 0 ' ; 19。 。19 20で ある20 のprintf(" ランダムな文字列が生成されます:%S \ N- " 、バッファ); 21は、 21がある フリー(バッファ); // メモリ解放 22は 22で 23で 23ある システム(" PAUSE " ); 24 24 リターン 0 ; 25 25 }
結果:
入力文字列の長さ:20
、ランダムに生成された文字列:phqghumeaylnlfdxfirc
プログラムは、指定された長さの文字列を生成し、ランダムに生成された文字を充填しました。のみ利用可能なメモリの文字列の長さの長さによって制限。
http://c.biancheng.net/cpp/html/137.html