Delete[] повреждает будущие выделения памяти [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Delete[] повреждает будущие выделения памяти [закрыто]

Сообщение Anonymous »

Я пытаюсь прочитать два двоичных файла и сравнить их, чтобы убедиться, что они одинаковы.
Есть много способов сделать это, я использую только самый простой из них. потому что это всего лишь скрипт проверки, который проверяет идентичность созданных мною файлов.
Из предыдущих тестов я знаю, что используемые мной двоичные файлы абсолютно одинаковы.
Проблема в следующем:
Когда я открываю первый раз 2 файла, сохраните их в виде char*, затем сравните, все в порядке.
Я могу открыть вторую пару файлов и потом сравнить.
Но если я использую удаление в буферах для первых двух файлов что-то вроде

Код: Выделить всё

delete[] fileOneBuffer
delete[] fileTwoBuffer
Затем я пытаюсь сравнить вторую пару файлов и получаю сообщение об ошибке, сообщающее, что они не совпадают.
Я печатаю байты и последние 2 байта символа размером 4 МБ* кажутся разными.
Пример кода:

Код: Выделить всё

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(filePath){
ifstream file(filePath, ios::binary);
fileSize = filesystem::file_size(filePath);
char* buffer = new char[fileSize];
file.read(buffer, fileSize);
file.close();
return buffer;
}

long fileSizeOf(filePath){
long fileSize = filesystem::file_size(filePath);
return fileSize;
}

void deleteBuffer(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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»