Heim > Backend-Entwicklung > C++ > Ist das Löschen eines Void-Zeigers in C sicher?

Ist das Löschen eines Void-Zeigers in C sicher?

Linda Hamilton
Freigeben: 2024-12-16 21:19:15
Original
887 Leute haben es durchsucht

Is Deleting a Void Pointer in C   Safe?

Fallstricke beim Löschen eines Void-Zeigers

Stellen Sie sich den folgenden Codeausschnitt vor:

void* my_alloc(size_t size)
{
    return new char[size];
}

void my_free(void* ptr)
{
    delete[] ptr;
}
Nach dem Login kopieren

Ist es sicher, den Void-Zeiger ptr zu löschen? dabei Art und Weise?

Antwort:

Gemäß dem C-Standard ist dies eine heimtückische Praxis. Abschnitt 5.3.5/3 lautet wie folgt:

"Wenn sich in der ersten Alternative (Objekt löschen) der statische Typ des Operanden von seinem dynamischen Typ unterscheidet, soll der statische Typ eine Basisklasse des sein Der dynamische Typ des Operanden und der statische Typ müssen einen virtuellen Destruktor haben, oder das Verhalten ist undefiniert. Bei der zweiten Alternative (Array löschen) ist das Verhalten anders, wenn der dynamische Typ des zu löschenden Objekts von seinem statischen Typ abweicht undefiniert.“

Die dieser Passage folgende Fußnote betont weiter:

„Dies impliziert, dass ein Objekt nicht mit einem Zeiger vom Typ void* gelöscht werden kann, da es keine Objekte vom Typ void gibt.“

Daher ist das Löschen über einen Void-Zeiger strengstens verboten, da es zu unvorhersehbarem Verhalten führen kann.

Das obige ist der detaillierte Inhalt vonIst das Löschen eines Void-Zeigers in C sicher?. 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