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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Problemas de perdida de memoria con memoria dinamica en: 26 Octubre 2017, 22:13 pm
Hola
Usando como entorno de trabajo un MCU NXP KE02 estoy intentando hacer una función en C que me devuelva un string. El contenido de dicho string varia con lo cual estoy usando memoria dinámica. El problema que estoy teniendo, es que cuando ejecuto por primera vez la función, funciona perfecta. Sin embargo, debuggeando descubrí que cuando quiero ejecutarla por segunda vez, se me resetea el MCU en el momento de ejecutar la linea del pedido de memoria (calloc), evidenciando un problema de pérdida de memoria o algo por el estilo. La función en la siguiente:

Código:
char *editar_parametro{
char *str_escrito = NULL;
str_escrito = (char *) calloc (5,sizeof(char));
str_escrito[0] = '\0';
strcpy(str_escrito,"Hola");

return str_escrito;
}


int main(){
for(;;){

char *str = editar_parametro();
strcpy(str_global,str);
free(str);

}

}


Alguno tiene idea qué puede ser lo que esté andando mal?
Saludos y gracias
2  Programación / Programación C/C++ / Re: Consulta sobre punteros y memoria dinámica en: 18 Octubre 2017, 19:21 pm
Hola Gallu

Muchas gracias por tu respuesta. La misma me ha sido de gran ayuda para la implementación puesto que he hecho algo similar. La unica diferencia es que los campos los guardo en una  una matriz de cantidad de columnas variable (i.e, puntero doble) para así poder poner correctamente los separadores de campos cuando corresponda.

Saludos

3  Programación / Programación C/C++ / Re: Consulta sobre punteros y memoria dinámica en: 13 Octubre 2017, 15:35 pm
Muchas gracias por tu respuesta Didacso.

Había pensado en hacer algo de ese tipo pero sucede que la función que me envía las tramas al canal de comunicación recibe únicamente variables del tipo char*. Por esta razón estaba necesitando una función que me devuelva la trama como cadena de caracteres.

Sucede que para ese puntero doble que recibirá la función (char **campos), ya habré pedido memoria dinámica.

Entonces el procedimiento dentro de mi función consistirá en volver a pedir memoria dinámica y liberar la que ya habia pedido cuando creé el puntero doble?

Saludos
4  Programación / Programación C/C++ / Consulta sobre punteros y memoria dinámica en: 12 Octubre 2017, 22:13 pm
Hola! Estoy intentando implementar una función en C que me arme una trama (cadena de caracteres) que luego será mandada a través de un canal de comunicación.

Para esto, primero tengo que crear la trama, la cual está compuesta de sus respectivos encabezados, campos de información, indicadores de fin de trama y finalmente el checksum.

Mi problema es que la longitud de la trama (cantidad de caracteres que poseerá) nunca será fija. Esto es, dependiendo de la trama que deseo enviar, varía la longitud de la misma, ya que ni la cantidad de campos es fija, ni la cantidad de caracteres lo es.

Para esto, se me ocurrió que podía hacer una función cuya declaración sea la siguiente:
Código:
char *armar_trama(char **campos, int cant_campos);//Funcion que devuelve una trama ya armada lista para enviar.

En donde **campos vendría a ser un vector de <cant_campos> cadenas de caracteres, en donde cada una de estas es de longitud distinta. Cada uno de estas cadenas representará un campo disitinto.

La idea es que la función concatene cada uno de estos campos dentro de una misma cadenas de caracteres y luego esta cadena de caracteres (trama) sea devuelta por la función.

Mi pregunta es: ¿Es necesario pedir memoria dinámica cada vez que concateno un campo dentro de la cadena de caracteres (trama) que será devuelta?

Muchas gracias por su ayuda
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines