gcc 4.4.1 c89Verwendung von sizeof mit einem dynamisch zugewiesenen Array
Ich habe den folgenden Code-Schnipsel:
#include <stdlib.h>
#include <stdio.h>
char *buffer = malloc(10240);
/* Check for memory error */
if(!buffer)
{
fprintf(stderr, "Memory error\n");
return 1;
}
printf("sizeof(buffer) [ %d ]\n", sizeof(buffer));
jedoch die sizeof (Puffer) immer druckt 4. Ich weiß, dass ein char * ist nur 4 Bytes. Allerdings habe ich den Speicher für 10kb reserviert. Sollte also nicht die Größe 10240 sein? Ich frage mich, denke ich gerade hier?
Vielen Dank für Ihre Anregungen,
Zum größten Teil hat der C-Compiler (für jede Version) keine Ahnung, was die Funktion 'malloc' tatsächlich tut oder verwendet. Alles, was es weiß, ist, dass es eine vorzeichenlose Ganzzahl (size_t) benötigt und einen void-Zeiger zurückgibt. Es könnte seinen Parameter verwenden, um den Zufallszahlengenerator zu setzen und eine Zufallszahl auf ein '(void *)' für alle Compiler-Sorgen zu werfen, so dass der Compiler nicht wissen kann, auf welche Größe der Speicher zeigt. – nategoose