Im auf Unix-Plattform.Was ist mit einem Mem-Leck in einem Kind-Prozess
Der Speicher eines Prozesses mit einem Memleak wird bei Prozessbeendigung gereinigt.
Was ist mit einem Prozess, der ein Kind hervorgebracht hat, wo das Kind ein Memleak hat. Wird der durchgesickerte Speicher bei Beendigung des Childprozesses bereinigt? Oder wird diese Erinnerung jetzt beim Elternprozess bleiben?
Dank
+1 obwohl Sie die Tatsache erwähnen sollten, dass einige Aufrufe wie 'vfork' und' clone' zu einem gemeinsamen Adressraum führen. – casablanca
Ich würde nicht die Ergebnisse von 'vfork' einen gemeinsamen Speicherbereich nennen. 'vfork' hat ein undefiniertes Verhalten, wenn Sie irgendetwas außer einer kurzen Liste von sicheren Funktionen zwischen den' vfork' und '_exit' oder einer der 'exec'-Funktionen aufrufen. Sicher ruft das Aufrufen von 'malloc' aus dem' vfork''d-Kind Speicherkorruption auf. Dasselbe gilt im Allgemeinen für "Klon" mit einem gemeinsamen Adressraum, es sei denn, Sie sind der Implementierer der Systemthread-Implementierung und haben die Freiheit, die richtigen Synchronisationsmechanismen in die System- "malloc" -Implementierung einzufügen. –
Und um das undefinierte Verhalten hervorzuheben, ist es völlig erlaubt (nach den neuesten Spezifikationen, die 'vfork', IIRC; das aktuelle POSIX hat nicht einmal' vfork') für 'vfork' zu haben, einfach' fork' zu nennen Verlassen Sie sich nicht auf einen gemeinsamen Speicherplatz nach 'vfork'. –