1. ホーム
  2. c

[解決済み] mallocはいつ、なぜ使うのか?

2023-06-10 22:28:56

質問

を使用してメモリを確保する必要があるのか、その理由がわかりません。 malloc .

以下は私のコードです。

#include <stdlib.h>

int main(int argc, const char *argv[]) {

  typedef struct {
    char *name;
    char *sex;
    int age;
  } student;


  //Now I can do two things
  student p;

  //or
  student *ptr = (student *)malloc(sizeof(student));

  return 0;
}

なぜメモリを確保する必要があるかというと、単に student p; ?

どのように解決するのですか?

malloc は動的なメモリ割り当てに使用されます。とあるように、実行時にメモリを確保することを意味する動的割り当てです。例えば、コンパイル時にメモリ容量が分からない場合などです。

一つの例で説明しましょう。例えば、生徒の数が最大20人だとします。そこで、静的な20の要素を持つ配列を作成することができます。この配列は最大20人の生徒を保持することができます。しかし、生徒の数がわからない場合はどうでしょうか?最初の入力が生徒の数だとします。10人、20人、50人、その他いろいろです。この場合、実行時に入力 n = 生徒の数 とし、その分のメモリを malloc .

これはほんの一例です。このように動的割り当てが必要な場面はたくさんあります。

マニュアルページを見てください。 malloc(3) .