次のように temp.h で宣言された構造体があるとします。
/* physical memory */
typedef struct pmem_struct {
uint32_t val;
} pmem_s, *pmem_p;
そして、メソッド pmem_p pmem_new() の temp.c ファイルでこの構造体を次のように宣言するとしましょう。
pmem_p pmem_new() {
pmem_s pmems;
pmem_p pmem = &pmems;
pmem->val = 0;
//printf(stderr, "From Mem: %x\n", pmem->val);
return pmem;
}
ここに私のmain.cファイルがあります:
#include <stdio.h>
#include "temp.h"
#include "gen.h"
int main() {
pmem_p pmem = pmem_new(); /* create some physical memory */
fprintf(stderr, "From Mem: %x\n", pmem->val);
......
}
pmem_new() の fprintf 行のコメントを外さない限り、この fprintf がFrom Mem: 4019cff4を出力するのはなぜですか。どちらもFrom Mem:0を正しく出力します。