gcc 4.4.1 c89sizeof con una matriz asignada dinámicamente
tengo el siguiente fragmento de código:
#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));
Sin embargo, el sizeof (tampón) siempre imprime 4. Sé que un char * es solo 4 bytes. Sin embargo, he asignado la memoria para 10kb. Entonces, ¿no debería el tamaño ser 10240? Me pregunto, ¿estoy pensando aquí?
Muchas gracias por todas las sugerencias,
En su mayor parte, el compilador de C (para cualquier versión) no tiene idea de qué función o para qué se utiliza la función 'malloc'. Todo lo que sabe es que toma un entero sin signo (size_t) y devuelve un puntero de vacío. Podría usar su parámetro para inicializar el generador de números aleatorios y convertir un número aleatorio en un '(void *)' para todos los problemas del compilador, por lo que el compilador no puede saber a qué apunta el tamaño de la memoria. – nategoose