Feste Speicherreservierung von X Byte
-
Hallo,
habe mal eine frage, bezüglich Speicherreservierung.
Wie ist es möglich eine bestimmte Byteanzahl an Speicher zu reservieren?
Ich möchte beispielsweise 512Byte Speicher für eine Variable reservieren. Ist es möglich? Wenn ja bitte ein beispiel.MfG
Dima
-
unsigned char buffer[ 512 ]; // statisch auf dem Stack. unsigned char *buffer = malloc( 512 ); // dynamisch auf dem Heap.
greetz, Swordfish
PS: bei dynamischer Speicherreservierung das Aufräumen mit
free( )
nicht vergessen!
-
Swordfish schrieb:
unsigned char buffer[ 512 ]; // statisch auf dem Stack.
auf dem 'stack' aber nur innerhalb von funktionen. sonst 'statisch im bss segment'.
-
speicher-freak schrieb:
auf dem 'stack' aber nur innerhalb von funktionen. sonst 'statisch im bss segment'.
Nein, immer auf dem Stack, denn Globals sind phöse
greetz, Swordfish
-
Danke für die schnellen antworten
-
Swordfish schrieb:
Nein, immer auf dem Stack, denn Globals sind phöse
und was ist mit 'static'? das ist auch voll schlecht, ne?
-
Schluss mit dem Unsinn. Ob Datensegment oder Stacksegment ist doch völlig unerheblich. C gibt dir sowieso keine garantie, was das betrifft.
greetz, Swordfish
-
Swordfish schrieb:
unsigned char buffer[ 512 ]; // statisch auf dem Stack. unsigned char *buffer = malloc( 512 ); // dynamisch auf dem Heap.
greetz, Swordfish
PS: bei dynamischer Speicherreservierung das Aufräumen mit
free( )
nicht vergessen!Gibt es noch andere Möglichkeiten mit int und ohne Arrays?
MfG
Dima
-
Weshalb willst Du kein Array? Naja, dann bleiben nur noch dynamische Varianten wie
int *buffer = malloc( 512 / sizeof( int ) ); // wenn's unbedingt 512 Bytes integer *) sein müssen
oder eine verkettete Liste.
greetz, Swordfish
PS: Wofür brauchst du denn genau 512 Bytes?
PPS: Hört sich an wie 20 dag Wiener
-
Dima schrieb:
Gibt es noch andere Möglichkeiten mit int und ohne Arrays?
du willst ein breiteres 'int' als 'int'? was hast du vor?
-
Swordfish schrieb:
int *buffer = malloc( 512 / sizeof( int ) ); // wenn's unbedingt 512 Bytes integer *) sein müssen
nicht / sondern *
-
void DateiKopieren(string& inf, string& outf) { unsigned char buffer[512]; int f; fstream infile, outfile; infile.open(inf.c_str(), ios::in | ios::binary); outfile.open(outf.c_str(),ios::out | ios:: binary); while(infile.read((char*)&f, sizeof(*buffer))) outfile.write((char*)&f, sizeof(*buffer)); infile.close(); outfile.close(); }
Noch eine Frage zum Quelltext oben.
Als Übung soll ein kleines programm geschrieben werden, dass eine beliebige Datei in 512Byte Häppchen kopieren soll. Bloß wie Überprüft man so etwas? Wird jetzt die angegebene Datei in 512 Byte Blöcken kopiert??? Oder wie kann man es anders gestallten?
MfG
Dima
-
... sizeof(*buffer)
ich wette das sternchen muss da weg. ansonsten biste mit dem code falsch hier. lass die eine etage tiefer, ins frickelforum, verschieben.