Diese Frage wurde mir in einem Interview gestellt.Was passiert, wenn versucht wird, Speicher freizugeben, der vom Heap-Manager zugewiesen wurde, der mehr zuweist als verlangt?
Angenommen char * p = malloc (n) weist mehr als n zu, sagen wir, dass N Bytes Speicher zugewiesen sind und free (p) wird verwendet, um den Speicher von p freizugeben.
kann Heap-Manager eine solche fehlerhafte Zuordnung durchführen? Was passiert jetzt, werden n Bytes freigegeben oder N Bytes freigegeben?
Gibt es eine Methode, um zu ermitteln, wie viel Speicher freigegeben wird?
EDIT
ist es eine Methode zu finden, wie viel Speicher frei ist?
besser als nichts,
mallinfo() kann etwas Licht wie spitz von "Fred Larson"
Warum denken Sie, dass eine solche Zuordnung fehlerhaft ist? Unabhängig davon, wie viele "tatsächliche" Bytes "malloc()" zugewiesen sind, können Sie nur 'n' Bytes verwenden und' free() 'wird alle zugewiesenen Bytes freigeben. Die meisten "malloc" -Implementierungen weisen mehr Speicherplatz zu, als aus Effizienzgründen angefordert werden. Eine Implementierung definiert "malloc" und "free" und muss definitionsgemäß ein Zuteilungsschema vereinbaren. –