Ł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
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.