Bei dem Programm dupmerge, von https://sourceforge.net/projects/dupmerge/files/, habe ich seit kurzem das Problem, das strndup() nicht mehr genügend Speicher bekommt und Null-Pointer zurückgibt.
Das tritt auf an der Stelle, an der die Dateinamen in Datenfelder eingelesen werden:
Code:
if ((NULL == (names[i] = strndup (buf, BUFSIZ))) or (NULL == (a_names[i] = strndup (buf, BUFSIZ))))
{
(void) fprintf (stderr, "%s: Out of memory, ((NULL == (names[i] = strndup (buf, BUFSIZ))) or (NULL == (a_names[i] = strndup (buf, BUFSIZ))))\n", argv[0]);
(void) fprintf (stderr, " i=%d, j=%d, names[i]=%p, a_names[i]=%p\n", i, j, names[i], a_names[i]);
exit (1);
}
Das zeigt:
dupmerge: Out of memory, ((NULL == (names[i] = strndup (buf, BUFSIZ))) or (NULL == (a_names[i] = strndup (buf, BUFSIZ))))
i=29909, j=35, names[i]=(nil), a_names[i]=(nil)
Also bei circa 1 MB ist plötzlich Schluß.
Woran liegt das und wie bekomme ich das Limit wieder weg?
ulimits zeigt mir "unlimited", also keine expliziten Limits.
Lesezeichen