2016-04-02 4 views

Antwort

0

Wenn veraltete Objekte nicht gesammelt werden, werden Sie laufen in ein OutOfMemoryError geschieht nicht in c passieren wird. Und das wird auch in C++ passieren, wenn Sie alte Daten nicht bereinigen (der Fehler wird wahrscheinlich nicht OutOfMemoryError genannt, aber die Konsequenzen sind die gleichen, denke ich).

+1

In C wird 'malloc()' fehlschlagen und NULL zurückgeben. In C++ wirft 'new'' bad_alloc', es sei denn, '(nothrow)' wurde angegeben, in diesem Fall wird NULL zurückgegeben. –

+0

Ok, ich habe nicht so viel Erfahrung mit C/C++ (es ist schon ein paar Jahre her). Wird das Programm abstürzen, oder können Sie diese Fehler irgendwie umgehen und umgehen? – dunni

+0

@dunni Wenn das ist, was Sie wissen wollten, sollten Sie gefragt haben, dass – Raedwald

0

Es geschieht in C/C++. Auf andere Weise. In C/C++ liegt die Verantwortung eher beim Programmierer, den zugeteilten Speicher zu verfolgen und freizugeben. Programmierer haben direkten Zugriff auf Speicher in Form von Zeigern. In Java ist alles vom Programmierer versteckt. Sie müssen den Speicher nicht im Auge behalten, JVM erledigt das für Sie in Form von Speicherbereinigung. Das bedeutet nicht, dass Sie Objekten verschwenderisch Speicher zuweisen können. Globale Objekte werden für lange Zeit beibehalten und wenn GC sie nicht rechtzeitig erreichen kann, überschreitet der Speicher die Grenze und OutOfMemoryException tritt auf.