K
Kamus of Kadizhar
When is malloc'd memory free'd by default?
Let's say I have two arrays:
#define MAXLEVEL 10
char *letters_array[MAXLEVEL];
char **keyMap;
and later I do something like:
void somefunc(xxxx) {
keyMap = malloc((sizeof (char *))*MAXLEVEL);
for (i = 0; i < MAXLEVEL; i++) {
letters_array = malloc(1000);
keyMap = malloc(1000);
}
}
How do I free the allocated memory?
Do I need to loop through like so:
void someotherfunc(xxxx) {
for (i = 0; i < MAXLEVEL; i++) {
free(letters_array);
free(keyMap);
}
free(keyMap);
}
or will the memory be freed when execution passes outside of the scope
where letters_array and keyMap are defined? Or is that when I start
leaking memory?
--Kamus
Let's say I have two arrays:
#define MAXLEVEL 10
char *letters_array[MAXLEVEL];
char **keyMap;
and later I do something like:
void somefunc(xxxx) {
keyMap = malloc((sizeof (char *))*MAXLEVEL);
for (i = 0; i < MAXLEVEL; i++) {
letters_array = malloc(1000);
keyMap = malloc(1000);
}
}
How do I free the allocated memory?
Do I need to loop through like so:
void someotherfunc(xxxx) {
for (i = 0; i < MAXLEVEL; i++) {
free(letters_array);
free(keyMap);
}
free(keyMap);
}
or will the memory be freed when execution passes outside of the scope
where letters_array and keyMap are defined? Or is that when I start
leaking memory?
--Kamus