Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: <<<-Basura->>> en 30 Septiembre 2011, 21:38 pm



Título: Duda??
Publicado por: <<<-Basura->>> en 30 Septiembre 2011, 21:38 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argv,char **argc){
  6. char *buffer = (char*)malloc(20);
  7. int t = sizeof(buffer);
  8. strcpy(buffer,argc[1]);
  9. printf("\nTamaño: %d Puntero: %p Contenido: %s\n\n",t,&buffer,buffer);
  10. free(buffer);
  11. return 0;
  12. }
  13.  

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 ??


Título: Re: Duda??
Publicado por: LearningSpanishProgrammer en 30 Septiembre 2011, 22:28 pm
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'.

Código:
int * i = malloc(sizeof(int)) // numero
int * j = malloc(sizeof(int) * 5) // arreglo

sizeof(i) == sizeof(j) == sizeof(int *)