geronet
21-04-2002, 23:13
Hi Leute,
ich hatte ein Programm mit der Funktion "scandir" geschrieben, und dabei das Beispiel aus der man-page verwendet. Das Programm (es gibt verschiedene Infos auf einem 16x4 Lcd aus) lief eine Weile sehr gut, aber nach 3 Tagen hatte es in "top" eine Speichergrösse von 173 MByte.
Es belegte fast den ganzen Swap, und nach langer Untersuchung kam ich drauf dass die Funktion intern noch "malloc" aufruft, allerdings danach kein "free" erfolgt.
Hier das Beispiel aus der manpage:
EXAMPLE
/* print files in current directory in reverse order */
#include <dirent.h>
main(){
struct dirent **namelist;
int n;
n = scandir(".", &namelist, 0, alphasort);
if (n < 0)
perror("scandir");
else
while(n--) printf("%s\n", namelist[n]->d_name);
}
Oben drüber steht aber dass "malloc" zwar verwendet wird, aber man selber "free" aufrufen muss. Hier eine man-page im Netz: http://www.ajk.tele.fi/libc/gen/scandir.3.html
Vielleicht ist ja die man-page veraltet, aber ich denke dass der Autor etwas vergessen hatte...
Grüsse, Stefan
ich hatte ein Programm mit der Funktion "scandir" geschrieben, und dabei das Beispiel aus der man-page verwendet. Das Programm (es gibt verschiedene Infos auf einem 16x4 Lcd aus) lief eine Weile sehr gut, aber nach 3 Tagen hatte es in "top" eine Speichergrösse von 173 MByte.
Es belegte fast den ganzen Swap, und nach langer Untersuchung kam ich drauf dass die Funktion intern noch "malloc" aufruft, allerdings danach kein "free" erfolgt.
Hier das Beispiel aus der manpage:
EXAMPLE
/* print files in current directory in reverse order */
#include <dirent.h>
main(){
struct dirent **namelist;
int n;
n = scandir(".", &namelist, 0, alphasort);
if (n < 0)
perror("scandir");
else
while(n--) printf("%s\n", namelist[n]->d_name);
}
Oben drüber steht aber dass "malloc" zwar verwendet wird, aber man selber "free" aufrufen muss. Hier eine man-page im Netz: http://www.ajk.tele.fi/libc/gen/scandir.3.html
Vielleicht ist ja die man-page veraltet, aber ich denke dass der Autor etwas vergessen hatte...
Grüsse, Stefan