Sowohl free(NULL)
als auch ::operator delete(NULL)
sind zulässig. Hat das allocator Konzept (zB std :: allocator auch deallocate(NULL,1)
erlauben, oder ist es benötigt, um Ihre eigene Wache um es zu setzen?C++ - Allokator <X> :: deallocate (NULL, 1) erlaubt?
6
A
Antwort
9
Sie müssen Ihre eigenen Check hinzuzufügen.
Nach §20.4. 1,1/8, deallocate
erfordert:
..p ein Zeigerwert, erhalten von zuzuteilen sein soll() n den Wert als erste Argument der Aufruf übergeben gleich wird der zuzuteilen, die p zurück
allocate
löst eine Ausnahme aus, wenn keine Speicherung möglich ist (§ 20.4. 1.1/7). Mit anderen Worten, allocate
gibt nie 0 zurück und daher sollte deallocate
niemals eine 0 erhalten. Das Übergeben einer 0 würde zu undefiniertem Verhalten führen.
Danke, davor hatte ich Angst. –