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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
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++ / 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