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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Re: Estructuras y reservar memoria en: 21 Febrero 2016, 12:36 pm
Cuando depuro y llego a esta linea de codigo me da error
Código:
punto->tamanyo_mazmorra[1][1]->x = 5;
y se termina el programa, eso me hace pensar que no puede acceder a esa zona de memoria y por ello creo que el problema esta al reservar la memoria. Creo que reservo mal.

El codigo que reserva la memoria es este:
Código:
Punto *punto;
 punto=(Punto*)malloc(sizeof(Punto));
   if(punto==NULL){
       printf ("error al reservar memoria");
   }

Y mi duda es que al tener en la estructura una matriz de 20x20 no tendria que hacer un bucle o algo? como cuando se libera la memoria



He estado probando y he hecho esto para reservar memoria y parece que funciona, da warnings pero me deja acceder a las zonas para escribir y leer, pero me da error al intentar liberar memoria, lo que he hecho es esto:

Código:
 punto->P_final=(Punto*)malloc(sizeof(Punto));
   punto->P_principio=(Punto*)malloc(sizeof(Punto));
   punto->p_tamanyo=(Punto*)malloc(sizeof(Punto));
   
   for(x=0;x<MAX;x++){
       for(y=0;y<MAX;y++){
            punto->tamanyo_mazmorra[x][y]=(Punto*)malloc(sizeof(Punto));
       }
   }


Me podeis decir si eso que hice esta bien porfa
12  Programación / Programación C/C++ / Estructuras y reservar memoria en: 20 Febrero 2016, 18:32 pm
Hola, espero no ser una molestia con los temas que abro cada poco tiempo.

Bueno, la cosa es que he tengo dos estructuras, y cuando reservo memoria para una de ellas creo que lo hago mal.


Aqui declaro las estructuras y defino MAX.
Código:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20

typedef struct _Mazmorra {
    
    int x;
    int y;
    char c;
    
}Mazmorra;

typedef struct _Punto{
    Mazmorra *P_final;
    Mazmorra *P_principio;
    Mazmorra *p_tamanyo;
    Mazmorra *tamanyo_mazmorra[MAX][MAX];
}Punto;


Aqui creo que reservo memoria, y pongo todo a NULL. Creo que aqui esta el fallo pero no se donde.

Código:
Punto* inicializar_mazmorra(){
    
    Punto *punto;
    int x,y;
    
   punto=(Punto*)malloc(sizeof(Punto));
   if(punto==NULL){
       printf ("error al reservar memoria");
   }

   punto->P_final=NULL;
   punto->P_principio=NULL;
   punto->p_tamanyo=NULL;
  
   for(x=0;x<MAX;x++){
       for(y=0;y<MAX;y++){
            punto->tamanyo_mazmorra[x][y]=NULL;
       }
   }
}


En esta libero la memoria, cuando compilo me da error al liberar la memoria, lo que me hace pensar que no reservo bien.
Código:
Punto* Liberarmemoria(){
    Punto *punto;
    int x,y;
    
    free(punto->P_final);
    free(punto->P_principio);
    free(punto->p_tamanyo);
       for(x=0;x<MAX;x++){
       for(y=0;y<MAX;y++){
            free(punto->tamanyo_mazmorra[x][y]);
       }
   }

}


Aqui el main, la cosa es que cuando complio e inteto escribir sobrela variable x en tamanyo_mazmorra me da eror y el programa finaliza
Código:
int main(){
    FILE *archivo;
    Punto *punto;
    int x;    
    
    punto =inicializar_mazmorra();
    
    punto->tamanyo_mazmorra[1][1]->x = 5;
    archivo = fopen("prueba.dat","r");
    if(archivo==NULL){
        printf ("error");
    }
    
    printf ("%c",punto->tamanyo_mazmorra[1][1]->x);
    
    //x = leer_archivo_mazmorra(archivo,punto);
    punto = Liberarmemoria();
    fclose(archivo);

    
}

Espero no ser de mucha molestia, un saludo  :)
13  Programación / Programación C/C++ / Re: Struct con puntero en: 14 Febrero 2016, 13:39 pm
Muchas gracias a los dos por las respuestas :)
14  Programación / Programación C/C++ / Re: Struct con puntero en: 13 Febrero 2016, 13:29 pm
Entonces tendría que hacer algo asi:

Código:
game = (Game*)malloc(sizeof(Game)) 

Con esto reservaria memoria para el puntero ¿no?

PD: me recomiendan algún libro donde hable sobre todo esto? structuras, punteros y reserva de memoria para estos?
15  Programación / Programación C/C++ / Struct con puntero en: 13 Febrero 2016, 11:46 am
Hola, tengo una duda y es que quiero que el programa me pida un int para inicializarlo en una structura, y luego que pinte ese numero en pantalla, y no se que estoy haciendo mal, ya que el numero no se imprime, debe haber algun error ya que el programa termina, la cosa es que al compilar no me da errores. Dejo el codigo a ver si me podeis hechar una mano, gracias.


Código:
struct _game{
    int player;
    int jugador;       
           
};
typedef struct _game Game;

Ahí delcaro la estructura

Código:
int main(){
    int x;
    T_Command h;
   
    Game *game;
    long y;
    y=3;
    funcion(&y);
    printf ("%ld \n",y);
   
    scanf ("%i",&game->jugador);
    printf ("%i",game->jugador);
   
   
    return 0;
   
   
}

y ahí el resto del programa. Un saludo :)
16  Programación / Programación C/C++ / Re: Netbeans me esta volviendo loco... en: 27 Enero 2016, 16:48 pm
Bueno, al final desistí, no tenía ni idea de que ocurría, creo que era culpa de cygwin... Al final he borrado windows 10 y dejare solo ubuntu.... Que me da muchisimos menos problemas...
17  Programación / Programación C/C++ / Netbeans me esta volviendo loco... en: 25 Enero 2016, 20:41 pm
Hola, bueno, tengo un problema, el otro dia formatee el ordenador e instale windows 10, ahora quiero instalarme netbeans, para ello me bajo la herramienta Java JDK, y luego me bajo netbeans y cygwin... Vamos como siempre.

Pero cuando me meto a netbeans y empiezo a programar y pongo una libreria como esta: "#include <stdio.h>" me apaerece un error, y pone esto "cannot find include file stdio.h" (este mensaje me aparece en la bombilla roja, al compliar sale un mensaje bastante más grande)
y no tengo ni idea de como arreglarlo, he reinstalado tanto el netbeans como el JDk y nada...

Un saludo
18  Programación / Programación C/C++ / Re: Problema memoria dinámica y ficheros en c en: 18 Diciembre 2015, 17:12 pm
Muchas gracias por tu ayuda :)
19  Programación / Programación C/C++ / Re: Problema memoria dinámica y ficheros en c en: 18 Diciembre 2015, 14:33 pm
Muchas gracias, era eso, ya cambie la función por realloc y funcionaa correctamente.

Otra cosa, con realloc no tengo que liberar memoria hasta que no termine el programa verdad? osea, amplio la memoria en 4 posiciones más con realloc, entonces son 8 y luego quiero volver a ampliar la memoria en otras 4 posiciones para que sean 12, por tanto no he de liberar la memoria ¿no?. Solo cuando no vaya a ampliar más memoria ¿no?
20  Programación / Programación C/C++ / Problema memoria dinámica y ficheros en c en: 18 Diciembre 2015, 12:34 pm
Hola, estoy haciendo un programa en c y tengo un problema, tengo que leer de un archivo de texto unos valores  y meterlos en una memoria dinámica.

Lo que hago es reservar memoria para tantos valores como haya en el fichero de texto (si hay 4 valores reservo memoria para esos 4).

Con un bucle voy leyendo valor a valor y metiéndolos en cada posición de la memoria dinámica, al finalizar de meter todos los valores libero la memoria. Hasta todo bien (creo) ya que guarda los valores.

Pero luego, más alante en el programa tengo que guardar más variables en memoria dinámica, para ello hago otra vez una llamada a malloc y reservo con el mismo nombre que reserve anteriormente. (osea se van a guardar en el mismo vector). Y cuando hago la reserva los valores de antes se me borran, los que leí del texto.

Espero haberme explicado correctamente

1º llamada a reservar memoria, leyendo de un fichero.

Código:
 posiciones = (int*) malloc (aux22 * sizeof (int));
                        if (posiciones == NULL) {
                            printf("Error al reservar memoria. ");
                            return 1;
                        }
                    }
                    if (aux23 < aux22) {
                        fscanf(f, "%i", &posiciones[aux23]);
                        aux23++;

2º llamada a reservar memoria, leyendo variables metidas por teclado.

Código:
posiciones = (int*) malloc (aux22 * sizeof (int));
            if (posiciones==NULL){
                printf ("error al reservar memoria");
            }
            aux24++;
            aux26++;
            posiciones[aux28]=aux24;
            aux28++;
            posiciones[aux28]=aux25;
            aux28++;
            posiciones[aux28]=aux26;
            aux28++;
            posiciones[aux28]=aux27;
            aux28++;
            free(posiciones);
            aux29=0;
        }

Los codigos no son completos, no he metido todo el bucle.

Muchas gracias, espero que me podais ayudar
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines