Forum: Compiler & IDEs RAM - Speicherproblem


von Martin Langbein (Gast)


Lesenswert?

@Jörg Wunsch
so habs so gemacht wie du gemeint hast..  und wer hätts gedacht es
geht;)

aber so ganz verstanden hab ich noch net warum meine version net lief.
ich hab doch praktisch nur ein pointer der auf ne struktur innerhalb
des puffers zeigt, übergeben.

Und des volatile hab ich seither noch net verwendet weil ich net weiss
was des bewirkt

vielen dank des hat mir viel zeit erspart

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

(Bitte keinen neuen Thread für altes Zeug.  Das macht es Anderen, die
den Thread nachträglich verfolgen, praktisch unmöglich, die Auflösung
zu erkennen.  Außerdem erschwert es das Antworten.)

> ich hab doch praktisch nur ein pointer der auf ne struktur innerhalb
> des puffers zeigt, übergeben.

Nein, du hast ein einzelnes Strukturelement kopiert, also nur den
ersten Eintrag deiner fdisk-Tabelle extrahiert.  Das ist erstens
zusätzlicher Aufwand, schon von daher vermeidet man sowas eher,
zweitens kannst du den Pointer nicht anschließend auf den nächsten
Eintrag der Tabelle weiterschalten.  In ganz altem C (pre-C89, das
sogenannte ,,K&R-C'') konnte man Strukturen nicht direkt (ohne
memcpy()) kopieren, schon daher ist das ein Feature, was
C-Programmierer auch heute nur eher spärlich benutzen.

Deine Variante hätte korrekt ungefähr so ausgesehen:
1
void readPe1(unsigned char *buffer,struct tPartitionEntry **pe){
2
  MMC_read_sector(0,buffer);
3
  *pe = (struct tPartitionEntry *)&buffer[PART_ENTRY_ONE];
4
}
5
6
7
int main(void) {
8
  unsigned char buffer[512];
9
  struct tPartitionEntry *pe;
10
11
  readPe1(buffer,&pe);
12
  return 0;
13
}

Du solltest dir das Kapitel über Zeiger und Felder in deinem
C-Lehrbuch nochmal durchlesen...

von Martin Langbein (Gast)


Lesenswert?

Sorry wegen dem Thread..
so sachen mit pointern haben wir zwar in der schule behandelt... aber
in
visual c++ ham wir uns nie so intensiev damit befasst, was letztlich
mit den variablen passiert und wo sie am ende stehen... da spielt die
ram-größe au net so ne große rolle.. man hat ja 512MB davon..
(zumindest mit dieser einstellung wurde es und beigebracht)

also vielen dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.