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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda código en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda código en C  (Leído 1,949 veces)
apache_888

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Duda código en C
« en: 13 Noviembre 2012, 23:00 pm »

Hola a todos. Tengo una pequeña duda con la reserva de memoria en C.

He creado las dos siguiente funciones, una para reservar memoria para una matriz de FilxCol y otra para liberarla. En principio creo que están bien, la cosa es que si después de llamar a estas funciones hago un printf y muestro la dirección a la que apunta matriz, no me sale NULL sino que apunta a una dirección tipo  0x7fff9db436d0. ¿por qué? :-\

Código:
void reserva_doble_char(int fil,int col,char ***matriz)
{
int i=0;
(*matriz)=(char **)malloc(sizeof(char *)*fil);

for(i=0;i<fil;i++)
{
(*matriz)[i]=(char *)malloc(sizeof(char)*col);
}
}

Código:
void liberar_doble_char(int fil,char *** ptr)
{
     int i=0;

     for(i=0;i<fil;i++)
     {
          free((*ptr)[i]);
          (*ptr)[i]=NULL;
     }
     free(*ptr);
     (*ptr)=NULL;
}


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda código en C
« Respuesta #1 en: 14 Noviembre 2012, 01:43 am »

Al parecer no hay ningún problema con estas funciones. Si puedes mostrar el código donde llamas a estas funciones y haces el printf sería bueno.


En línea

apache_888

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Duda código en C
« Respuesta #2 en: 14 Noviembre 2012, 01:59 am »

Al parecer no hay ningún problema con estas funciones. Si puedes mostrar el código donde llamas a estas funciones y haces el printf sería bueno.

La llamada a estas funciones es así:
Código:
  ...
int main(int argc, char **argv)
{
    char ** paneles=NULL;
    int nPaneles;
   ...
    reserva_doble_char(nPaneles,50,&paneles);
   ...
    liberar_doble_char(nPaneles,&paneles); //Aquí se supone que paneles no apunta a ninguna dirección.
    printf("\n\n%p",&paneles);
...
}

Lo único que se me ocurre es que el poner "ptr=NULL" no sirve de nada.
« Última modificación: 14 Noviembre 2012, 02:01 am por apache_888 » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda código en C
« Respuesta #3 en: 14 Noviembre 2012, 02:46 am »

Código
  1. printf("\n\n%p",&paneles);
  2.  

Estás imprimiendo la dirección de memoria de paneles mas no la dirección a donde está apuntando. Nunca te va a imprimir NULL.

Código
  1. printf("\n\n%p",paneles);
  2.  

Así sí te imprimiría NULL
En línea

apache_888

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Duda código en C
« Respuesta #4 en: 14 Noviembre 2012, 12:04 pm »

Juassssssssssssssssssssss   que fallo el mio, gracias naderST.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda en el codigo vb
Programación Visual Basic
josemer 0 1,295 Último mensaje 23 Enero 2006, 20:32 pm
por josemer
duda en un codigo vb
Programación Visual Basic
ugruhell 6 2,386 Último mensaje 26 Agosto 2006, 00:20 am
por Ironhorse
Duda con codigo de vb6 y el MSN « 1 2 »
Programación Visual Basic
Anteros 10 3,340 Último mensaje 6 Abril 2007, 01:54 am
por Sancho.Mazorka
Duda codigo PHP
PHP
knox18 1 1,675 Último mensaje 9 Septiembre 2007, 17:24 pm
por P[i]
Duda codigo PHP « 1 2 »
PHP
knox18 14 5,337 Último mensaje 14 Septiembre 2007, 15:15 pm
por Alex_bro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines