elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda??  (Leído 1,256 veces)
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Duda??
« 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 ??


En línea

<<<--Basura-->>>
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Duda??
« Respuesta #1 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 *)


En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,810 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines