Usuwanie tablicy dynamicznej w osobnej funkcji

0

Wiem że większość używa new i delete i może utrudniam sobie życie ale chciałem to zrobić właśnie w taki sposób. Tworzę tablice dynamiczne jedno i dwuwymiarowe. Chciałbym uprościć maina - dlatego tworzenie tablic, usuwanie ich oraz wypisywanie chciałem wyciągnąć do osobnych funkcji. Już myślałem że to pójdzie ale coś mi się krzaczy.

 #include <stdio.h>
#include <stdlib.h>

double * stworz_macierz(int wymiar){
	int i;
	double *macierz = (double *) malloc (wymiar *sizeof(double));
	for (i=0; i<wymiar; i++);
		macierz[i]=0;
	return macierz;
}
double ** stworz_macierz_2(int wymiar_1, int wymiar_2){
	int i,j;
	double **macierz;
	macierz = (double **) malloc (wymiar_1*sizeof(double *));
	for(i=0; i<wymiar_1; i++){
		macierz[i] = (double *) malloc (wymiar_2*sizeof(double));
	}
	for (i=0; i<wymiar_1;i++){
		for (j=0; j<wymiar_2; j++){
			macierz[i][j]=0;
		}
	}
	return macierz;
}

void wypisz(double *macierz, int wymiar,char znak);
void wypisz_2(double **macierz, int wymiar_1, int wymiar_2, char znak);
void usun(double *macierz){
	free(macierz);
}
void usun_2(double **macierz, int wymiar){
	int i;
	for(i=0; i<wymiar; i++){
		free(macierz[i]);
	}
	free(macierz);
}

int main(){
	double **A,*B;
	int n,j;
	printf("Podaj n - wymiar.\n");
	scanf("%d", &n);
	A = stworz_macierz_2(n,n);
	B = stworz_macierz(n);
	wypisz_2(A,n,n,'A');
	wypisz(B,n,'B');

	usun_2(A,n);
	usun(B);
	return 0;
} 

Wypisanie chodzi, tworzenie połowicznie (działało jak tworzyłem tablice, ale jak dodałem kod wypełniający zerami to o dziwo tablice jednowymiarowe mi się krzaczą) ale usuwanie chyba w ogóle nie usuwa bo komp mi zmula. Pewnie zamiast usuwać daną tablicę to wykonuję free na jej kopii czy coś takiego. Podejrzewam że problem to zamiana * na & czy coś tego typu ale google zasypuje mnie czym innym bo pewnie źle szukam. Help głównie odnośnie tego usuwania tablicy dynamicznej przez funkcję.

0

Na pierwsze spojrzenie wygląda prawidlowo (choc brak informacji co dzieje sie w funkcjach wypisz). Nie rozumiem co dziala zle - jak opiszesz dokladniej, to moze ktoś spradzi na tę okoliczność.

0

Dzięki :) ... No właśnie siedziałem i siedziałem nad tym i komp mi zmulał myślałem że jednak nie zwalnia mi pamięci przez to że robię to przez funkcje. Poza tym jak w funkcji tworzącej tablice dodałem zerowanie elementów to dla tablic jednowymiarowych mi się krzaczyło i nie widziałem dlaczego mimo że sprawdzałem debugerem. Jednak chyba komp się zmęczył bo po restarcie działało tak jak miało ;)

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