Ładny brzuch

class PLIK { public: char *dane; unsigned int ilosc_danych; bool wczytaj(char *filename); void zwolnij(); }; void PLIK::zwolnij() { delete[] dane; return; } bool PLIK::wczytaj(char *filename) { FILE *plik; plik=fopen(filename, "rb"); if(plik==NULL) return 1; fread(&ilosc_danych, sizeof(unsigned int), 1, plik); dane = new char[ilosc_danych];   fread(&dane, sizeof(char), ilosc_danych, plik); fclose(plik); return 0; }
wszystko fajnie sie kompiluje, nastepnie jest fragment
PLIK cos_tam;
cos_tam.wczytaj("test.txt");
/* ... */
cos_tam.zwolnij();

i jeli plik nie istnieje to "wczytaj()" zwraca 1 i cala aplikacja sie zamyka jak powinna, natomiast gdy plik istnieje, pojawia si alert:
"Wystpil problem z aplikacj i zostanie ona zamknita"
i wszystko sie wylacza



//--------------------------------------------------------------------------- #include <iostream.h> #include <string.h> #include <conio.h> #include <stdio.h> //--------------------------------------------------------------------------- class PLIK { public: char *dane; unsigned int ilosc_danych; bool wczytaj(char *filename); void zwolnij(); }; bool PLIK::wczytaj(char *filename) { FILE *plik; plik=fopen(filename, "rb"); if(plik==NULL) return 1; fread(&ilosc_danych, sizeof(unsigned int), 1, plik); dane = new char[ilosc_danych]; fread(&dane, sizeof(char), ilosc_danych, plik); fclose(plik); return 0; } void PLIK::zwolnij() { delete &dane; } using namespace std; int main(int argc, char* argv[]) { PLIK cos_tam; cos_tam.wczytaj("Unit.cpp"); cos_tam.zwolnij();      getch();        return 0; } //---------------------------------------------------------------------------

moe tak,, bo nie obczajam twojego myslenia co do zwalniania pamici. najlepiej napisac konstruktor klasy i destruktor do tego.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •