Software > Coding

Abfrage freier Speicher / TOS 2.06

<< < (5/10) > >>

HamSTer:
Danke für die Erklärungen.
Ich habe hier das Buch "C Programmieren von Anfang an" von Helmut Erlenkötter. 16. Auflage von 2009.
Ist das brauchbar?

simonsunnyboy:

--- Zitat von: HamSTer am Mi 01.05.2013, 17:44:00 ---Danke für die Erklärungen.
Ich habe hier das Buch "C Programmieren von Anfang an" von Helmut Erlenkötter. 16. Auflage von 2009.
Ist das brauchbar?

--- Ende Zitat ---

Ja, in jedem Fall. Ich weiss z.B. aus dem alten Profibuch von 1988, daß da auch nicht ordentlich mit Pointern beschrieben wird, sondern auch immer nur mit long.

C hat den Vorteil, daß die Sprachbasis unabhängig ist. Alle Aufrufe, ob Windows oder TOS spezifisch, sind nur Funktionsaufrufe aus Bibliotheken. Die kann man dan separat erlernen, wenn die Grundlagen sitzen.

AUch genrelle fragen einfach hier reinstellen, auch wenns nur C allgemein und nicht Atari spezifisch ist. Helfen können wir immer zumindest versuchen ;)

HamSTer:
die korrigierte lösung, nun ohne Warnungen, schaut so aus


--- Code: ---#include <tos.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

int main(void){
uint16_t i,j=0;
int32_t mem=1, frei=0;
void *merk[255];
for(i=0;i<255;i++){
merk[i]=0;
}
i=0;
while(mem != 0){
mem = (long) Malloc(-1);
if(mem>0){
merk[i] = (long *) Malloc(mem);
frei=frei+mem;
i++;
}
}
printf("%d Speicherbl”cke allociert.\n",i);
for (j=0;j!=i;j++){
Mfree(merk[j]);
}
printf("Bytes frei %ld",frei);
return EXIT_SUCCESS;
}

--- Ende Code ---

edit: korrektur im quelltext
edit2: weiteres edit im quelltext. zudem compilat angefügt.

simonsunnyboy:
merk = (long *) Malloc(mem);

Deine Merker sind vom Typ void *, warum weist Du long * zu? Ja es funktioniert, aber eigentlich musst du sinngemäß auch auf void * casten. (Das aber nur am Rande.)

HamSTer:
hm..

hab dann ein

long *merk[255];

draus gemacht.
so ist es dann wohl doch irgendwie sinnvoller.

oder aber beim malloc

merk = (void *) malloc(mem);

??


Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln