Título: Duda, problema de asignacion con Malloc Publicado por: Fabi0lo en 24 Noviembre 2012, 23:56 pm Buenas, otra duda sencilla que no puedo responder, acá intentando asignar memoria a un arreglo de char y al parecer lo asigna mal, en que falla??
Tengo definida en una cabecera esta estructura que contiene un char Código
main.c Código Se supone que debería asignarse un tamaño 2048 para cada vector, pero en lugar de ello me imprime 8. No se a que se debe este problema, alguien me podría aclarar en que me estoy equivocando?? Título: Re: Duda, problema de asignacion con Malloc Publicado por: Ferno en 25 Noviembre 2012, 00:04 am El error viene en el printf.
Al hacer sizeof(str.mensjae[2]) justamente te va a devolver el tamaño del tipo "char*" que es, en 64 bits, de tamaño 8 :D Si queres ver si se asignó bien, bueno no se, copiá algo de 2047 caracteres en ese espacio. Si ves que no dio seg fault, es porque se asignó bien la memoria ^^ Título: Re: Duda, problema de asignacion con Malloc Publicado por: Fabi0lo en 25 Noviembre 2012, 00:15 am Lo he probado y solo puede ingresar textos de tamaño 8 en cada vector, por eso intenté imprimirel tamaño de cada vector y justamente indicaba 8, pero no cuadra, de donde salio ese 8 cuando le estoy especificando 2048. No se donde es que no cuadra
Título: Re: Duda, problema de asignacion con Malloc Publicado por: Ferno en 25 Noviembre 2012, 00:22 am El 8 es el tamaño de un puntero en tu arquitectura. Por eso ese printf ahí es correcto, pero no es correcta la forma de usarlo (no muestra lo que tu realmente quieres ver).
¿Podrías postear el code de cómo ingresaste los textos? Título: Re: Duda, problema de asignacion con Malloc Publicado por: Fabi0lo en 25 Noviembre 2012, 00:57 am creo que ya encontré la pifia, entonces era el sizeof(str.mensaje[ i ]) ? quizás ahi agarre sentido, no se refiere al tamaño del vector en sí, si no as bien del puntero, tambien intenté cambiarlo por strlen(str.mensaje[ i ]), pero también se cae, nada mas queda poner el numero en duro 2048 xd
Código
Una duda, entonces si quiero usar cada vector para modificarlo luego... como le hago referencia? Título: Re: Duda, problema de asignacion con Malloc Publicado por: Ferno en 25 Noviembre 2012, 01:50 am Si pides memoria y automáticamente utilizas strlen(str.mensaje[ i ]); no deberías confiar en lo que se imprime, porque si no lo inicializaste ahí hay basura.
Para ver bien, pides memoria, le asignas algo a dicho vector. Algo como no se... Código Y luego imprimes: Código Título: Re: Duda, problema de asignacion con Malloc Publicado por: 0xDani en 25 Noviembre 2012, 18:31 pm Simplemente cuando hubo algun error malloc() retorna NULL. Si el valor de retorno es distinto de NULL se asigno bien la memoria, y si aun asi quieres convencerte de que se ha reservado:
Código
|