Ich glaube, die Antwort ist nein, lassen Sie niemals einen Speicherverlust zu, und ich habe einige Gründe, die ich nicht explizit angegeben habe. Hier gibt es großartige technische Antworten, aber ich denke, die eigentliche Antwort hängt von mehr sozialen / menschlichen Gründen ab.
(Beachten Sie zunächst, dass, wie andere bereits erwähnt haben, ein echtes Leck vorliegt, wenn Ihr Programm zu irgendeinem Zeitpunkt den Überblick über die zugewiesenen Speicherressourcen verliert. In C geschieht dies, wenn Sie malloc()
auf einen Zeiger verweisen und diesen Zeiger den Gültigkeitsbereich verlassen, ohne a auszuführen free()
zuerst.)
Der wichtige Kern Ihrer Entscheidung hier ist die Gewohnheit. Wenn Sie Code in einer Sprache , die Anwendungen Zeiger, Sie gehen Zeiger verwenden viel . Und Zeiger sind gefährlich; Sie sind der einfachste Weg, um Ihrem Code alle möglichen schwerwiegenden Probleme hinzuzufügen.
Wenn Sie programmieren, werden Sie manchmal am Ball sein und manchmal werden Sie müde oder verrückt oder besorgt sein. Während dieser etwas abgelenkten Zeiten codieren Sie mehr auf dem Autopiloten. Der Autopilot-Effekt unterscheidet nicht zwischen einmaligem Code und einem Modul in einem größeren Projekt. Während dieser Zeit werden die Gewohnheiten, die Sie festlegen, in Ihrer Codebasis landen.
Nein, lassen Sie niemals Speicherlecks zu, aus dem gleichen Grund, aus dem Sie beim Spurwechsel immer noch Ihre toten Winkel überprüfen sollten, auch wenn Sie derzeit das einzige Auto auf der Straße sind. In Zeiten, in denen Ihr aktives Gehirn abgelenkt ist, sind gute Gewohnheiten alles, was Sie vor katastrophalen Fehltritten bewahren kann.
Über das Problem der "Gewohnheit" hinaus sind Zeiger komplex und erfordern oft viel Gehirnleistung, um sie mental zu verfolgen. Es ist am besten, das Wasser nicht zu "trüben", wenn es um die Verwendung von Zeigern geht, insbesondere wenn Sie neu in der Programmierung sind.
Es gibt auch einen sozialeren Aspekt. Durch die ordnungsgemäße Verwendung von malloc()
und free()
wird sich jeder, der sich Ihren Code ansieht, wohl fühlen. Sie verwalten Ihre Ressourcen. Wenn Sie dies jedoch nicht tun, werden sie sofort ein Problem vermuten.
Vielleicht haben Sie herausgefunden, dass der Speicherverlust in diesem Zusammenhang nichts schadet, aber jeder Betreuer Ihres Codes muss dies auch in seinem Kopf herausfinden, wenn er diesen Code liest. Durch die Verwendung free()
entfernen Sie die Notwendigkeit, das Problem überhaupt zu berücksichtigen.
Schließlich schreibt die Programmierung ein mentales Modell eines Prozesses in eine eindeutige Sprache, damit eine Person und ein Computer diesen Prozess perfekt verstehen können. Ein wesentlicher Bestandteil einer guten Programmierpraxis besteht darin, niemals unnötige Mehrdeutigkeiten einzuführen.
Intelligente Programmierung ist flexibel und allgemein. Schlechte Programmierung ist nicht eindeutig.