Draqun
Użytkownik
- Dołączył
- Sierpień 27, 2007
- Posty
- 67
Witam.
Ponownie mam problem z tym diabelskim przydzielaniem pamięci w C. Oto kod.
Plik nr1
Biblioteka
Otóż w funkcji find hero następuje wyciek pamięci. Jak się można domyśleć program skompiluje, jednak po uruchomieniu dostajemy z bańki Naruszenie pamięci. Przypuszczam, ze chodzi o przypisanie strukturze Gdzie konkretnych wartości jednak nie bardzo wiem jak sobie z tym poradzić.
Proszę o pomoc a ja tymczasem sam rozgryzam co jest nie tak
EDYTA
PROBLEM ROZWIĄZANY. TEMAT DO KOSZA
Ponownie mam problem z tym diabelskim przydzielaniem pamięci w C. Oto kod.
Plik nr1
Kod:
#include<stdio.h>
#include<stdlib.h>
#include"libra.h"
char **teren();
int findhero(char***);
int main()
{
int i;
Plecak=(struct Backpack*)malloc(sizeof(struct Backpack));
Plecak->klucz1=0;
Plecak->klucz2=0;
Plecak->cash=0;
Gdzie=(struct Kordy*)malloc(sizeof(struct Kordy));
char **plansza=teren();
findhero(&plansza);
ruch(&plansza);
free(Plecak);
free(Gdzie);
for(i=0;i<20;i++)
{
free(plansza[i]);
}
free(plansza);
return 0;
}
char **teren()//funkcja pobiera z pliku tekstowego plansze i umieszcza ja w tablicy, która ma przydzielona pamieć ram
{
char **plansza;
int ROZ_X=21, ROZ_Y=21;
int i,j;
FILE*plik;
plik=fopen("map.txt", "r");
if(plik==NULL)
{
return NULL;
}
plansza=(char**)malloc(sizeof(char*)*20);//przydzielamy pamięć tabeli na adresy
for(i=0;i<ROZ_X;i++)
{
plansza[i]=(char*)malloc(sizeof(char)*20);//przydzielamy wierszom pamięć
}
for(i=0;i<ROZ_X;i++)//umieszczamu mapę w tablicy :)
{
for(j=0;j<ROZ_Y;j++)
{
fscanf(plik,"%c", &plansza[i][j]);
}
}
for(i=0;i<ROZ_X;i++)//umieszczamu mapę w tablicy :)
{
for(j=0;j<ROZ_Y;j++)
{
printf("%c", plansza[i][j]);
}
}
fclose(plik);
return plansza;
}
int findhero(char ***hero)
{
int a,b;
for(a=0;a<20;a++)
{
for(b=0;b<20;b++)
{
if(*hero[a][b]=='0')
{
Gdzie->WYS=a;
Gdzie->SZER=b;
}
}
}
return 0;
}
Kod:
struct Backpack
{
int klucz1;
int klucz2;
int cash;
};
struct Kordy
{
int SZER;
int WYS;
};
struct Backpack *Plecak;
struct Kordy *Gdzie;
Otóż w funkcji find hero następuje wyciek pamięci. Jak się można domyśleć program skompiluje, jednak po uruchomieniu dostajemy z bańki Naruszenie pamięci. Przypuszczam, ze chodzi o przypisanie strukturze Gdzie konkretnych wartości jednak nie bardzo wiem jak sobie z tym poradzić.
Proszę o pomoc a ja tymczasem sam rozgryzam co jest nie tak
EDYTA
PROBLEM ROZWIĄZANY. TEMAT DO KOSZA
Ostatnia edycja: