Duda??

Iniciado por <<<-Basura->>>, 30 Septiembre 2011, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

<<<-Basura->>>


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argv,char **argc){
char *buffer = (char*)malloc(20);
int t = sizeof(buffer);
strcpy(buffer,argc[1]);
printf("\nTamaño: %d Puntero: %p Contenido: %s\n\n",t,&buffer,buffer);
free(buffer);
return 0;
}


Tengo ese código, mi pregunta es porque cuando hago el  sizeof(buffer); Me imprime 4, y no me imprime 20, del tamaño que estoy reservando ??
<<<--Basura-->>>

LearningSpanishProgrammer

Su duda es muy normal.
Estás pidiendo el tamaño del puntero, no del arreglo.

No hay una manera genérica de saber el tamaño del espacio de memoria que un puntero apunta.
Tienes que almacenar el numero usado en el 'malloc'.


int * i = malloc(sizeof(int)) // numero
int * j = malloc(sizeof(int) * 5) // arreglo

sizeof(i) == sizeof(j) == sizeof(int *)
Estoy aprendiendo español, y tu estas aprendiendo programación