[解決済み] 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) .
関連
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
エラー: 宣言されていない識別子 'bool' の使用と C コンパイラでの問題点
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] mallocとcallocの違い?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
C/C++の再定義
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] C言語でランダムなint型を生成するには?
-
[解決済み] C言語でmallocを使うべきとき、使ってはいけないとき?