複数の .c ファイルで使用できる変数を宣言しようとしています。これは、構造体へのポインターの malloced 配列です。
私が理解していることから、ヘッダーファイルでexternで宣言する必要がありますが、ヘッダーファイルでmallocできないため、ヘッダーファイルで宣言してから.cファイルでmallocしますか? これがどのように行われるかわかりません。
複数の .c ファイルで使用できる変数を宣言しようとしています。これは、構造体へのポインターの malloced 配列です。
私が理解していることから、ヘッダーファイルでexternで宣言する必要がありますが、ヘッダーファイルでmallocできないため、ヘッダーファイルで宣言してから.cファイルでmallocしますか? これがどのように行われるかわかりません。
はい、ヘッダーで宣言しmalloc
、.c ファイルで宣言します。free
malloced ポインターにはスコープ自体がなく、 dの場合にのみ割り当てが解除されます。したがって、プログラム全体でポインターを使用できます。
ヘッダー ファイルで、ポインターを宣言します。ポインターを参照するすべての .c モジュールにヘッダーを含めます。
extern struct yourstruct *ps;
次に、最も適切な .c モジュールで変数を定義します
struct yourstruct *ps;
ps = malloc(....
FILE **file_array=NULL;
function(){
file_array = malloc(size*sizeof(FILE*));
}
cファイルでmallocし、ヘッダーファイルで宣言する必要があります。また、そのアクセスと割り当て解除にも注意する必要があります。無料で一度だけ割り当てを解除する必要があります。おそらく、プログラムの実行の最後に。また、複数のファイルでアクセスする前に、ガード条件 (null のチェック) を入れる必要があります。