私は、問題のコードのこの部分を実行するとデバッグがあります奇妙な行動
bool readSectionHeaders(char* path, int numOfSections, int peSectionsOff, IMAGE_SECTION_HEADER* out) {
bool retr = false; //return value
//open file
FILE* file;
file = fopen (path, "rb");
if(file == NULL) {
perror("WRG"); //TODO
return false;
}
do { //do while(false) only for easier error correction
//seek to first section
fseek(file, peSectionsOff, SEEK_SET);
//read all sections
unsigned int count;
IMAGE_SECTION_HEADER sectionHeaders[numOfSections];
count = fread(sectionHeaders, sizeof(IMAGE_SECTION_HEADER), numOfSections, file);
//check Bytes count
if(count != sizeof(IMAGE_SECTION_HEADER)*numOfSections) {
break;
}
//copy sections
memcpy(out, sectionHeaders, count);
//exit successfully
retr = true;
} while(false);
//exit
fclose(file);
return retr;
}
奇妙である何が、それがファイルを読み込む場合でもfalseを返すということです。私はそれをデバッグしようとした、そして、ここでは、最も奇妙な部分です。
は、私はそれが
return false;
にperrorはおよび移動をスキップしかし、全く戻らないファイルがNULLではないにもかかわらず、その後、この1
if(file == NULL) {
まで行ずつ行きます。
私は再び
何かをしているようだretr = true;
まで行ずつ行く、しかしRETRは偽のまま。
次にファイルを閉じ、falseを返します。
私はこのようなことをしたことはありません。 私は、プロジェクトを掃除しようとしました、再構築、さらにはファイルを削除し、それらをsubversionから再ダウンロードしました。この関数を使う前に、私は似たようなものを使っています。私はPEヘッダを読みました。ですから、私はファイルを読むことに問題があるかもしれませんが、デバッグの動作を説明していません。
関数から復帰した後、私はperrorを使用し、Noエラーを書き込みます。
私はmingwをQtCreatorで使用します。
ありがとうございます。
? それは何ですか? – Samuel
OK、それはC++です。私はブールに気づきましたが、それは非常にCのようです(悪いです)。あなたのエラーはあなたのif(...)ブレークに来ていると思います。句。 – 111111
それは非常にCのような(それは悪いです) - ありがとう、それは本当に悪いか悪い習慣ですか? – Samuel