wielkość pliku i struktury

dział ogólny

wielkość pliku i struktury

Nowy postprzez Arkoarek » niedziela, 27 października 2013, 17:06

Witam. Do prostego programiku graficznego wykorzystuję strukturę by ją potem zapisać do pliku. Zauważyłem, że taka struktura obojętnie ile danych w niej umieszczę ma taką samą wielkość, i wydaje się że za dużo jak na kilka zmiennych int i char . Struktura zawiera tablice i jest ustawiona na 500 elementów z czego wykorzystywanych jest najczęściej mniej. Czego nie wiem? Dzięki
Avatar użytkownika
Arkoarek
Bladawiec
Bladawiec
 
Posty: 21
Dołączył(a): środa, 16 października 2013, 14:51
Podziękował : 5
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: Borland C++Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: wielkość pliku i struktury

Nowy postprzez Cyfrowy Baron » niedziela, 27 października 2013, 18:16

Struktura zawsze będzie miała maksymalny rozmiar określony przez zmienne, niezależnie ile danych zawiera. Rozmiar danych nie może oczywiście przekroczyć maksymalnego rozmiaru struktury. Tak to już niestety jest z zapisywaniem struktur do plików.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: wielkość pliku i struktury

Nowy postprzez Arkoarek » niedziela, 27 października 2013, 19:01

Dzięki za odpowiedź. Te same dane zapisane w pliku tekstowym zajmują znacznie mniej pamięci. Tylko odczyt pewnie dłużej trwa. Jeszcze dobrze tego nie sprawdziłem. Jest jakiś inny sposób zapisywania danych niż zapisywanie struktur ?
Avatar użytkownika
Arkoarek
Bladawiec
Bladawiec
 
Posty: 21
Dołączył(a): środa, 16 października 2013, 14:51
Podziękował : 5
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: Borland C++Builder 6
Gadu Gadu: 0
    Windows XPFirefox

Re: wielkość pliku i struktury

Nowy postprzez polymorphism » poniedziałek, 28 października 2013, 10:27

Jeśli zapisujesz więcej danych niż potrzeba, to czemu się dziwisz? Struktury nie mają tu nic do rzeczy, bo równie dobrze możesz zapisywać kilobajtową tablicę char[] tylko po to, żeby zapisać jednoznakowy łańcuch. Równie nieefektywne a bez struktur.

W programowaniu obiektowym istnieje termin serializacja - zapoznaj się z nim.

Struktura zawsze będzie miała maksymalny rozmiar określony przez zmienne (...)

Częściowo prawda. Rożmiar struktury nie będzie mniejszy niż suma wielkości pól, ale może być większy, jeśli wyrównanie struktury (data structure alignment) jest większe od jednego bajta. Generalnie struktury, które mają być zapisywane do pliku (lub wysyłane poza aplikację, np. protokoły sieciowe) powinny być wyrównane do jednego bajta.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: wielkość pliku i struktury

Nowy postprzez Cyfrowy Baron » poniedziałek, 28 października 2013, 10:28

Arkoarek napisał(a):Tylko odczyt pewnie dłużej trwa


To już zależy od tego jak odczytujesz te dane z pliku. Jeżeli są to zwykłe dane tekstowe to po co się bawić w struktury?!
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 70 gości

cron