Wenn Allocator
entspricht der Standard-Bibliothek Allokator-Schnittstelle, ist es sicher, std::allocator_traits<Allocator>::deallocate
mit einem Nullzeiger aufzurufen? Ich weiß, es ist, wenn Allocator
ist std::allocator
(weil es schließlich auf delete
deferiert) aber was ist, wenn Allocator
ist eine Client-Klasse zur Verfügung gestellt? Muss ich eine explizite Überprüfung durchführen? cppreference.com
's Artikel über die Allocator concept listet keine solche Garantien, so denke ich, die Antwort ist "Ja", aber ich wollte sicher sein.Aufruf von allocator_traits :: Zuweisung auf einen Null-Zeiger
Um ein wenig Motivation für die Frage zu geben, stelle ich mir einen Anwendungsfall vor, wo eine Variable einen Zeiger auf den Puffer halten soll (und anfangs auf nullptr
gesetzt ist), aber aus irgendeinem Grund war der Puffer nie an erster Stelle zugewiesen, so bleibt ein Nullzeiger.
Sie meinen, dass Zeiger auf Speicher ist nullptr UND Anzahl der Objekte ist> 0? –
Ändert sich die Antwort abhängig davon, ob die Anzahl der Objekte Null ist oder nicht? –
Mein Eindruck ist gewesen, dass, wenn der zugeordnete Allokator nullptr zu allocate zurückgeben kann, nullptr auch ein gültiges Argument ist, um die Zuordnung aufzuheben. Ich kann mir jedoch nicht vorstellen, warum es nullptr zurückgibt, wenn die Anzahl der Objekte> 0 ist. –