Funkcja zmienia wartości komórek tablicy choć nie powinna

0
int **initTabConnections(FILE *pMiejscowosci, city *tabCities, int c) {
	int **tabConnections;
	int i, j, k;
	static char buff[MAXLINELEN];
	fseek(pMiejscowosci, 0, SEEK_SET);
	
	tabConnections = (int**) malloc(sizeof(int*) * c);
	for (k = 0; k < c; ++k) tabConnections[k] = (int*) malloc(sizeof(int) * c);
	
	i = -1;
	while (fgets(buff, MAXLINELEN, pMiejscowosci) != NULL) {
		if (!isdigit(buff[0])) ++i;
		else {
		
			j = findCityIndex(getCity(buff), tabCities);			
			tabConnections[i][j] = getDist(buff);
			tabConnections[j][i] = tabConnections[i][j];
		}	
		
	}
	
	return tabConnections;
}
 

Mam taki problem: otóż wyżej napisana funkcja zmienia mi przekazywaną do niej tablicę tabCities, choć nigdzie czegoś takiego w kodzie nie robię, za pomocą gdb doszedłem do tego, że dzieje się to w linijce:

"for (k = 0; k < c; ++k) tabConnections[k] = (int*) malloc(sizeof(int) * c);"

po jej wykonaniu wartości tablicy tabCities są zmienione na totalnie bezsensowne typu '000000>ppp000sp00000', czy wie może ktoś dlaczego tak się dzieje?
Z góry dziękuję za pomoc i pozdrawiam

0

Pokazałeś akurat nieistotny kawałek kodu, ale moja szklana kula mówi mi że niepoprawnie przydzieliłeś pamięć do tej swojej tablicy (tzn w ogóle pamięci nie przydzieliłeś, tylko zrobiłeś wskaźnik) i w efekcie pisanie po stosie ci tą "tablicę" psuje.

0

Haha masz rację :) Trywialny błąd zagubiony w setkach linijek.

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