Ich neige dazu, std * Allok/freie Funktionen zu verwenden, um dynamischen Speicher in meinen C-Programmen zu reservieren. Ich frage mich, ob es irgendwelche gute Gründe gibt, die GLIB Memory Allocation functions anstelle der Std-Einsen zu verwenden.glib Speicherzuweisung VS Std * Alloc und frei
Ich wäre dankbar, wenn die Community auf Situationen hinweisen könnte, in denen eine dieser Lösungen ein Gewinner/Verlierer ist. Ich bin auch an Leistungsproblemen interessiert, die ich treffen könnte, falls ich das eine oder das andere verwende.
Danke!
Edited Zustand Plattformen
Diese Programme normalerweise auf alle Arten von Linux/Unix-Distributionen laufen, normalerweise 64 Bits Archs mit gcc 4.2 kompiliert.
Unter Linux schlägt die Zuweisung sowieso nie fehl. (Mit Standard-Kernel-Einstellungen.) Also, obwohl ich immer malloc Rückgabewert überprüfen, würde ich mich sonst schmutzig fühlen, dieser Code-Pfad wird sowieso nie verwendet. –
Ich habe die Rückgabewerte von malloc vor langer Zeit aufgegeben. Was werden Sie tun, wenn Ihnen der Speicher ausgeht? Die Chancen stehen gut, dass Sie nicht einmal eine Nachricht an stderr schreiben können. Es erscheint angemessen, das Programm, das sowieso stattfindet, abzubrechen, sobald der Null-Zeiger dereferenziert wird. – JeremyP
@ JeremyP, genau!Deshalb würde ich das Programm lieber abbrechen. Ich kann mir einen Anwendungsfall vorstellen, um zu testen, ob genügend Speicher vorhanden ist, um etwas zuzuweisen, aber für diese Fälle gibt es immer 'g_try_malloc()'. – ptomato