C で構造体を宣言するときに、次のように言います。
typedef struct my_stuct {
int x;
float f;
} STRT;
この構造体のインスタンスを作成して使用する場合は、構造体のメンバーを実際に初期化/使用する前に、明示的に malloc を呼び出し、この構造体のメモリ位置へのポインターを取得する必要があります。
STRT * my_struct_instance = (STRT *) (malloc(sizeof(STRT)));
ただし、プリミティブ データ型 ("int a;" など) を宣言してから初期化する (またはその他の操作を行う) 場合は、実行する前に malloc を呼び出して明示的にメモリ領域を割り当てる必要はありません。その上での操作:
// we do not need to do a malloc(sizeof(i)) blah blah here. Why?
i = 10;
この矛盾の理由を教えてください。ありがとうございました!