size_t型はint型とは違うらしいですが
str = (char *)malloc(GetFileSize(hFile , NULL) + 1);
NULL文字の確保に+1が必要なんですが、このコード間違ってます?