c언어 질문드립니다(파일 입출력 관련)

hephaistus의 이미지

if (max_insts && sim_num_insn >= max_insts)
        {
                //memset(cache_il1,0,sizeof(struct cache_t));
                //FILE *fp = NULL;
                FILE * fp = NULL;
                if((fp = fopen("image.bin","wb")) == NULL)
                {
                        fprintf(stderr,"error\n");
                        exit(1);
                }
      //        fwrite(cache_il1)
                fwrite(&cache_il1, sizeof(struct cache_t), 1, fp);
                fclose(fp);
                if((fp = fopen("image.bin","rb")) == NULL)
                {
                        fprintf(stderr,"error\n");
                        exit(1);
                }
               // int i;
                fread(&cache_il1, sizeof(struct cache_t), 1, fp);
                fclose(fp);
 
            return;
            }
    }

제가 하려고 하는것이 cache_il1 포인터 변수가 가리키고 있는 구조체에 저장되어 있는 내용을 파일에 바이너리로 저장하려고 하는데요
위 처럼 하니 파일이 생성이 안되더라구요.
혹시 cache_il1에 malloc을 안해줘서 그런것인가요?
무엇이 문제인건지 따끔한 조언 부탁드립니다.

익명 사용자의 이미지

cache_il1이 무엇을 가르키고, malloc이 되었는지 문제가 아니고,

fp =fopen("image.bin", "wb");
이 명령이 제대로 수행되었는지 확인하셔야 합니다.
fwrite함수로 값을 쓰기전, fopen("image.bin", "wb"); 명령이 제대로 수행되었다면, 빈 "image.bin"파일이 생성됩니다.

"image.bin"파일이 생성되지 않았다고 하셨는데, 이 말은 즉, fp =fopen("image.bin", "wb"); 명령을 수행되지 않았을지도 모르겠네요.