ich hätt' da mal ne frage. Nämlich ich soll als Übung ne Aufgabe in C programmieren und ich habe das noch nie getan.
Also es geht darum. Ich soll unter Linux mit Hilfe des gcc ein C- Programm schreiben, welches einen Speicherblock von 4 Byte mit malloc alloziert. Und mit einer Zeigeroperation und einer Schleife soll ich schauen, wieviel Byte Speicher ich jetzt tatsächlich bekommen habe.
Hier mein Code:
Code: Alles auswählen
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main (void) {
int *bla;
int *test;
int i;
int mem=0;
bla =(int *)malloc(4);
for(i=0; i <1000000000; i++) {
test = bla+i;
*test = 1;
mem = mem +4;
printf("bytes bis putt: %d\n", mem);
}
return 0;
}
also Mittels malloc alloziere ich nu die 4 Byte.
Die for- Schleife lass ich jetzt halt bis zu dieser willkürlichen Zahl laufen. Denn ich habe mir gedacht, dass ich sicher irgendwann mal nicht mehr in den speicher schreiben darf. Und dann das Programm abstürzt. ja und bei meinem versuch dies zu machen kamen 2288 Bytes raus. die bekomm ich durch den Zähler mem und dadurch dass integer 4 Byte gross ist, zähl ich bei jedem Durchlauf um 4 hoch.
Nun meine Frage: sehe ich das richtig dass ich 2288 Bytes alloziert bekommen habe oder ist das nur Zufall, und das ich in Wirklichkeit 4 Byte bekommen habe und der restliche Speicher zufällig frei ist?
oh je
Gruss penthesilea