Dynamiczna allokacja pamięci - sprawddzenie

0

Czy da się sprawdzić ile pamięci rezerwuje program dla danej tablicy?
Napisałem coś takiego

 #include <stdio.h>
#include <stdlib.h>//needs to use mallock
int main(){

char *z = (char *) malloc(sizeof(char) * 18 ); 
 z[0]='s';             
 z[1]='u';     
 z[2]='p';     
 z[3]='e';     
 z[4]='r';     
 z[5]=' ';     
 z[6]='t';                                                                                                                                                                         
 z[7]='o'; 
 z[8]=NULL;    
    printf("%s",z);
	system("pause");
    return 0;

}

Jakie polecenie wpisać by zobaczyć ile pamięci zajmuje tablica z (powinna zajmować 18)
W programie tworzę tablice w zależności od długości pliku, chciałbym, sprawdzić czy wszystko działa tak jak należy.

0

Tablica zajmuje sizeof(char) * 18. Dlaczego chcesz to „sprawdzać”?

0
//2x2 ARRAY
final=(char**) malloc(sizeof(char*)*rows); 
rows=0;
line_size=0;
while((tempChar=fgetc(file)) != EOF) {
	line_size++;
	if(tempChar=='\n'){ 
		final[rows] = (char*)malloc(line_size);
		line_size=0;
		rows++;//incrase lines
	}
}
final[rows] = (char*)malloc(line_size);//last row 

Nie wiem czy dobrze zrobiłem dla ostatniego wiersza(nie kończy się on znakiem nowej lini)
Wygląda poprawnie lecz czy jest możliwość sprawdzenia ile zajmują tablice?
Wiem że tablice numeruje się od 0 więc poprawnie było by line_size-1. Lecz później dodaję do każdej tablicy na końcu NULL'a
Jeśli zamiast
final[rows] = (char*)malloc(line_size); dam: final[rows] = (char*)malloc(3);
To również wszystko działa (mimo iż każdy wiersz ma więcej niż 3 znaki)

1

Wygląda poprawnie lecz czy jest możliwość sprawdzenia ile zajmują tablice?
Ale co to znaczy „sprawdzenia”? Tablica zajmuje tyle, ile jej dajesz w mallocu.
Jak chcesz, to sobie to wyświetl:

printf("%i\n",sizeof(char)*18);

Ale kiedy masz tylko wskaźnik, i chcesz się dowiedzieć ile zostało do niego przydzielone, to nie, nie ma możliwości sprawdzenia.

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