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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  reservar memoria para punteros en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: reservar memoria para punteros en C  (Leído 18,938 veces)
08l00D

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: reservar memoria para punteros en C
« Respuesta #20 en: 30 Mayo 2010, 19:55 pm »

Si, pero cont arranca de 0 asi que:
Código:
lista = (char**)realloc(lista, sizeof(char*) * (cont+ 1));
Pero si lo incrementa previamente con "++count;" una linea antes...


@Ghalad Lo que no entiendo es que decis que es en C, usas funciones propias de la libreria de C, manejas las cadenas como se haria en C, y sin embargo hay varias partes de codigo que son propias de C++, no me parece muy logico pero bue..


En línea

Ghalad

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: reservar memoria para punteros en C
« Respuesta #21 en: 30 Mayo 2010, 19:59 pm »

Si, el codigo tiene que ser enteramente en C ansi pero me es mas facil para mostrarselo a ustedes en c++.


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: reservar memoria para punteros en C
« Respuesta #22 en: 30 Mayo 2010, 20:52 pm »

Pero si lo incrementa previamente con "++count;" una linea antes...

Estaba viendo el codigo original donde no lo hacia  ;D
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Ghalad

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: reservar memoria para punteros en C
« Respuesta #23 en: 1 Junio 2010, 20:54 pm »

Te tengo otra pregunta, mi programa recive de un servidor una estructura compuesta por 4 char* de longitud (los primeros 3) menor a 512 bytes y la 4ta de tamaño variable entre 1 y nose.... 9999999..muchos bytes, depende de la persona que haya cargado la informacion en esa estructura, no importa. Y como ultima transferencia recibe un ".". El hecho es que mi programa hace un recv, un malloc y un strcpy para el 1er, 2do y 3er campo. Para el 4to hago algo asi:

Código
  1. memset(buffer, 0 ,512);
  2. i = recv(buffer);
  3. buffer[i]='\0';
  4. while(strcmp(buffer, "."))
  5. {
  6.    estructura.m_cuerpo = (char*)realloc(estructura.m_cuerpo,  SIZEOF(CHAR)*STRLEN(BUFFER) +1);
  7.    if(strlen(estructura.m_cuerpo) > 0)strcat(estructura.m_cuerpo, buffer);
  8.    else strcpy(estructura.m_cuerpo, buffer);
  9.    memset(buffer, 0, 512);
  10.    i =recv(buffer);
  11.    buffer[i]='\0';
  12. }

Lo que estoy preguntando es, de que forma puedo hacer ese WHILE para que vaya agrandando la variable hasta que reciba del socket un ".". Y esta mal el tamaño del realloc, lo se jajaj.
Todo esto forma parte de un sistema que estoy haciendo para un trabajo practico, es un servidor de noticias que utiliza el protocolo nntp (un toke simplificado) esos 4 campos serian los campos de un articulo de noticias ID, groupname, head y body. Los primeros 3 basta con 512 bytes (1 lectura de socket) y el body puede llegar a ser mas grande, el tema es como agrando correctamente el body de mi estructura?
En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines