C ++ std :: cout Ошибка времени выполнения "Не удалось прочитать память" - PullRequest
0 голосов
/ 03 сентября 2018

Я получаю сообщение «Инструкция в 0xXXXXXXXX ссылается на память в 0xXXXXXXXX. Ошибка памяти не может быть прочитана» при использовании std::cout, но printf работает нормально. Я использую Windows XP.

int view(string archive_name) {

    FILE *read_ptr;
    char *buffer;
    string file_name, entry;
    float file_size;

    read_ptr = fopen(archive_name.c_str(), "rb");
    if(read_ptr == NULL) {
        cout << "\n" << archive_name << " : Archive file not found\n";
    }
    else {
        cout << "\nFiles in archive : " << archive_name << ",\n\n"
             << "Filename\t\tSize\n-------------------------------------------\n";

        for(int c = 0; c < 5; c++){
            fscanf(read_ptr, "%s %s %f ", entry, file_name, &file_size);
            float file_size_mb = (file_size/1024)/1024;
            cout << file_name << "\t\t" << file_size_mb;    //Gives error
            printf("%s\t\t%.2fMB\n", file_name, file_size_mb); //Works fine

            buffer = (char*) malloc (sizeof(char)*file_size);
            size_t result = fread(buffer, 1, file_size, read_ptr);
            free(buffer);
        }
        fclose(read_ptr);
    }
}
...