Есть много способов сделать это, я использую только самый простой из них. потому что это всего лишь скрипт проверки, который проверяет идентичность созданных мною файлов.
Из предыдущих тестов я знаю, что используемые мной двоичные файлы абсолютно одинаковы.
Проблема в следующем:
Когда я открываю первый раз 2 файла, сохраните их в виде char*, затем сравните, все в порядке.
Я могу открыть вторую пару файлов и потом сравнить.
Но если я использую удаление в буферах для первых двух файлов что-то вроде
Код: Выделить всё
delete[] fileOneBuffer
delete[] fileTwoBuffer
Я печатаю байты и последние 2 байта символа размером 4 МБ* кажутся разными.
Пример кода:
Код: Выделить всё
#include
#include
#include
#include
#include
using namespace std;
bool compareBinaries(char* firstBuffer, int firstBufferLen, char* secondBuffer, int secondBufferLen) {
if (firstBufferLen != secondBufferLen) {
return false;
}
for (int i = 0; i < firstBufferLen; i++) {
if (firstBuffer[i] != secondBuffer[i]) {
return false;
}
}
return true;
}
char* read(string filePath){
ifstream file(filePath, ios::binary);
long fileSize = filesystem::file_size(filePath);
char* buffer = new char[fileSize];
file.read(buffer, fileSize);
file.close();
return buffer;
}
long fileSizeOf(string filePath){
long fileSize = filesystem::file_size(filePath);
return fileSize;
}
void deleteBuffer(char* buffer) {
delete[] buffer;
}
int main() {
char* fileOneBuffer = read("path1.bin");
char* fileTwoBuffer = read("path2.bin");
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79333409/delete-corrupts-future-memory-allocations[/url]
Мобильная версия