ich schreibe gerade ein kleines Tool mit dem ich csv Dateien in eine MySQL Tabelle eintrage. Ich schreibe das in C, weil wegen der Menge der Datensätze ein PHP-Skript viel zu langsam ist. Das Prog läuft soweit auch schon sehr gut. Allerdings habe ich mal eine mehr oder weniger allgemeine Frage zur Speicherverwaltung unter Linux. Folgendes erzählt mir nämlich valgrind:
Code: Alles auswählen
==4546== 24 bytes in 1 blocks are still reachable in loss record 1 of 2
==4546== at 0x4C2260E: malloc (vg_replace_malloc.c:207)
==4546== by 0x508FE42: my_malloc (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x5090AEA: my_error_register (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x508E989: mysql_server_init (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x50B4DCE: mysql_init (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x401A89: data_insert_main (insert-main.c:31)
==4546== by 0x401F65: main (main.c:77)
==4546==
==4546==
==4546== 61,320 bytes in 15 blocks are still reachable in loss record 2 of 2
==4546== at 0x4C2260E: malloc (vg_replace_malloc.c:207)
==4546== by 0x5096895: my_once_alloc (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x5096F4F: (within /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x509782C: (within /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x5097B13: get_charset_by_csname (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x50B4BC1: mysql_init_character_set (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x50B6AA7: mysql_real_connect (in /usr/lib/libmysqlclient.so.15.0.0)
==4546== by 0x401AE6: data_insert_main (insert-main.c:40)
==4546== by 0x401F65: main (main.c:77)
Darum meine Frage: Ist das jetzt eigentlich schlimm, oder gibt der Linux-Kernel den Speicher irgendwann von sich aus wieder frei?