Título: Problema con puntero a una memoria reservada Publicado por: fafafa01 en 25 Junio 2016, 22:32 pm Buenas, estoy pasando un puntero(que apunta a cierta memoria reservada por malloc) como argumento de una función y adentro de la función quiero saber el largo del arreglo, lo quise hacer del siguiente modo pero me tira un error.
Código
el error esta en el if de la función, dice: error:cannot cast 'float' to 'float*' si a alguien se le ocurre porque pasa esto, me seria de ayuda, gracias. Título: Re: Problema con puntero a una memoria reservada Publicado por: AlbertoBSD en 25 Junio 2016, 23:01 pm Por que en los parametros de la funcion no pasas el tamaño del arreglo?
Código
El detalle que en C no hay forma de que otra funcion conozca cuanta memoria reservaste con malloc/calloc/realloc Saludos Título: Re: Problema con puntero a una memoria reservada Publicado por: geeke en 26 Junio 2016, 08:15 am Buenas, estoy pasando un puntero(que apunta a cierta memoria reservada por malloc) como argumento de una función y adentro de la función quiero saber el largo del arreglo, lo quise hacer del siguiente modo pero me tira un error. Si estas en Windows puedes usar _msize() Código
En el caso de Linux tienes malloc_usable_size() Título: Re: Problema con puntero a una memoria reservada Publicado por: AlbertoBSD en 26 Junio 2016, 14:04 pm Valla no conocia malloc_usable_size
Si lo quieres usar tienes que colocar Código
Ahora segun el manual: Citar NOTES top The value returned by malloc_usable_size() may be greater than the requested size of the allocation because of alignment and minimum size constraints. Although the excess bytes can be overwritten by the application without ill effects, this is not good programming practice: the number of excess bytes in an allocation depends on the underlying implementation. The main use of this function is for debugging and introspection. Segun dice que te puede devolver un valor mas grande que el que reservastes originalmente esto devido a cuestiones de alineamiento, y te dice que el principal uso es para depurar. Mejor también envia el valor de la longitud que puede ser escribible en otra variable como otro argumento en la función. Saludos! |