OliverH
29-11-2007, 17:29
Hallo, ich wundere mich grade über das Verhalten der sizeof() funktion:
#include <stdio.h>
#include <stdlib.h>
int main() {
char * ptr;
ptr = (char *) malloc(40 * sizeof(char));
printf("Size: %i\n", sizeof(ptr));
return 0;
}
Meiner Meinung nach, sollte eine Größte von 40 Bytes ausgegben werden.
In der Realität sieht es aber so aus:
oliver@castor:~$ gcc malloc-test.c
oliver@castor:~$ ./a.out
Size: 4
oliver@castor:~$
Gibt es dafür eine Erklärung? Wenn ja, welche?
Ich experimentiere derzeit auch noch mit der realloc() Funktion, und möchte meinen Speicher erweitern (in einer Schleife), als Debug Info, wollte ich mir die aktuelle größe meiner buffers mit sizeof() ausgeben lassen, nur steht der dort auch immer auf 4.
Gruß
Oli
#include <stdio.h>
#include <stdlib.h>
int main() {
char * ptr;
ptr = (char *) malloc(40 * sizeof(char));
printf("Size: %i\n", sizeof(ptr));
return 0;
}
Meiner Meinung nach, sollte eine Größte von 40 Bytes ausgegben werden.
In der Realität sieht es aber so aus:
oliver@castor:~$ gcc malloc-test.c
oliver@castor:~$ ./a.out
Size: 4
oliver@castor:~$
Gibt es dafür eine Erklärung? Wenn ja, welche?
Ich experimentiere derzeit auch noch mit der realloc() Funktion, und möchte meinen Speicher erweitern (in einer Schleife), als Debug Info, wollte ich mir die aktuelle größe meiner buffers mit sizeof() ausgeben lassen, nur steht der dort auch immer auf 4.
Gruß
Oli