Binarny zapis do i odczyt z pliku.

0

Witam,

Mam kod:

#include <fstream>
#include <cstdio>

int main() {
    std::ofstream plik("dane.binary", std::ofstream::binary);
    int *tab = new int[5];

    for(unsigned int i=0; i<5; ++i)
        tab[i] = i;

    plik.write((char*)&tab, sizeof(tab));

    plik.close();
    plik.clear();

    std::ifstream plik2("dane.binary", std::ifstream::binary);

    int *tab2 = new int[5];
    plik2.read((char*)&tab2,sizeof(tab2));

    for(int i=0;i<5;++i)
        printf("%d ",tab2[i]);

    plik2.close();

    return 0;
}

który poprawnie(?) zapisuje i odczytuje tablice w postaci binarnej. Jednak jeśli przeniosę kod odczytu do zupełnie innego programu, ten się wykrzacza przy wypisywaniu.

#include <fstream>
#include <cstdio>

int main() {
    std::ifstream plik2("dane.binary", std::ifstream::binary);

    int *tab2 = new int[5];
    plik2.read((char*)&tab2,sizeof(tab2));

    for(int i=0;i<5;++i)
        printf("%d ",tab2[i]);

    plik2.close();

    return 0;
}

Jak widać kod jest kopią z programu pierwszego.

Co powoduje błąd?

1
    int *tab = new int[5000];
    if(sizeof(tab)<=8) printf("W C/C++ nie ma możliwości sprawdzenia ile przydzielono pamięci");
0

Mógłbyś trochę rozwinąć odpowiedź? Bo nie do końca jestem w stanie ją zrozumieć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1