Alokowanie tablicy w funkcji i zwracanie jej przez parametr.

0

Czesc. Znalazłem na tym forum wskazówki jak zrobić funkcje alokującą tablice 2 wymiarową. =Funkcja alokująca niby działa, ale jak wracam z funkcji wskaźnik na zaalokowaną pamieć i chce przypisać do map to dostaje SIGSEGV. Możecie pomóc znaleźć błąd ?? Sama funkcja, jej wywołania i "otoczka" poniżej. Z góry dzięki za czas i pomoc.

int** AllocMem( int x, int y)
{
    int i;
    int** t;

    t = (int *) malloc(x * sizeof(int *));
    for(i = 0; i < x; i++)
        t[i] = (int *) malloc(y * sizeof(int));
    return t;
} 

mam tez inną funkcje która wykorzystują, tą wyżej :

int loadMap(char* filePath, int*** map, int* rowCount, int* colCount) {
//...
  *map = AllocMem(_rowCount, _colCount);
//...	
}
 

Ta funkcja z kolei wywoływana jest :

 
_map.loadMap = loadMap;
int loaded = _map.loadMap(_map.fileToLoad, &_map.map, &_map.rowCount, &_map.colCount);

gdzie _map to

struct map _map; 

Na końcu struktura map to

struct map{
  char* fileToLoad;
  int (*loadMap)(char* filePath, int*** map, int* rowCount, int* colCount);
  int ** map;
  int inicjalized;
  int rowCount, colCount;
};
0

jak działa loadMap? bo z deklaracji widać, jakby chciało modyfikować wskaźnik z tablicą.

0

Idea jest taka, że funkcja powinna zaalokować tablice i ją uzupełnić na podstawie danych z pliku tekstowego. Po zakończeniu działania tej funkcji we przekazanym wskaźniku ma być cała tablica z mapą.

0

W którym miejscu się wywala?

1 użytkowników online, w tym zalogowanych: 0, gości: 1