Heim > Backend-Entwicklung > C++ > Hauptteil

Wie unterscheidet sich die Speicherzuweisung in C in VC6 im Vergleich zu neueren Compilern?

Mary-Kate Olsen
Freigeben: 2024-11-17 11:03:01
Original
884 Leute haben es durchsucht

How Does Memory Allocation in C   Differ in VC6 Compared to Newer Compilers?

Neue Zuweisung in C

Wenn in C der neue Operator keinen Speicher zuordnet, löst er eine std::bad_alloc-Ausnahme aus. Berichten zufolge weichen jedoch bestimmte Compiler wie VC6 von diesem Standard ab.

VC6-Verhalten

VC6 hält sich nicht an den C-Standard und gibt stattdessen 0 (oder NULL) zurück ), wenn die Speicherzuweisung fehlschlägt. Diese Nichtkonformität kann zu Code führen, der unordentlich aussieht, da nach jeder neuen Anweisung ständig nach NULL gesucht werden muss.

Lösung

Microsoft erkennt dieses Problem in Knowledge an Basisartikel KB276944. Um dies in VC6 zu umgehen, ermöglicht MSVC die Verknüpfung mit einem benutzerdefinierten neuen Handler. In neueren MSVC-Compilern (7.0 und höher) bietet die Verknüpfung mit der Objektdatei nothrownew.obj das gleiche Verhalten wie VC6.

VS2005 und darüber hinaus

MSVC 8.0 (VS2005 ) führte eine Änderung ein, bei der new nun standardmäßig standardmäßig std::bad_alloc auslöst. Die Option zur Rückgabe von 0 kann weiterhin mit dem Parameter std::nothrow angegeben werden, wie im bereitgestellten Codebeispiel gezeigt. Dies ist eine abwärtskompatible Lösung, die es ermöglicht, dass Code mit jeder Compilerversion funktioniert.

Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die Speicherzuweisung in C in VC6 im Vergleich zu neueren Compilern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage