セクション 2. 章 4
single
構造体の動的割り当て
メニューを表示するにはスワイプしてください
C言語でメモリを動的に割り当てる方法の確認。
ヒープ領域にメモリを割り当てるには、stdlib.hライブラリの**malloc()**関数を使用。
<pointer> = (data_type*)malloc(n * sizeof(data_type));
注意
プログラムで動的にメモリを割り当てた場合、そのメモリはfree()で明示的に解放するまで確保されたままになる。
main.c
12345678910111213141516171819#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }
構造体が異なるデータ型の複数のフィールドを含む場合、コンパイラは構造体がメモリに「効率的に」格納されるように、フィールドのサイズを調整します。
作業が完了した後、intフィールドとcharフィールドを持つ構造体に割り当てられるバイト数に注目してください。この現象については、このコースの後半で説明します。
タスク
スワイプしてコーディングを開始
「Student構造体」を作成し、malloc()関数を使用してそのメモリを動的に確保する必要があります。
構造体にサンプル値を初期化し、そのポインタを返してください。
createStudent関数内では:
malloc()を使って1つのStudent構造体分のメモリを確保します。- メモリ確保が成功したかを確認します(失敗した場合は
NULLを返します)。 sprintf()を使ってデフォルトの名前(例:"Alice Johnson")を代入します。ageに21などの値を代入します。gpaに3.85などの値を代入します。- 確保した構造体へのポインタを返します。
main関数内では:
- 使用後に
free()関数を使って確保したメモリを解放します。
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 4
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください