gcc 4.4.1 c89Uso sizeof con un array allocato dinamicamente
ho il seguente frammento di codice:
#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));
Tuttavia, il sizeof (buffer) sempre stampato 4. So che un char * è solo 4 byte. Tuttavia, ho assegnato la memoria per 10kb. Quindi la dimensione non dovrebbe essere 10240? Mi sto chiedendo sto pensando proprio qui?
Molte grazie per qualsiasi suggerimento,
Per la maggior parte, il compilatore C (per qualsiasi versione) non ha idea di cosa sia la funzione 'malloc' per la quale è stata o utilizzata. Tutto quello che sa è che richiede un intero senza segno (size_t) e restituisce un puntatore void. Potrebbe usare il suo parametro per seminare il generatore di numeri casuali e lanciare un numero casuale su un '(void *)' per tutte le preoccupazioni del compilatore, quindi il compilatore non può sapere quale sia la dimensione della memoria puntata. – nategoose