Оба free(NULL)
и ::operator delete(NULL)
позволяются. Делает понятие средства выделения (например, станд.:: средство выделения также позволяет deallocate(NULL,1)
, или это требуется поместить Вашу собственную защиту вокруг этого?
Вам нужно будет добавить свой собственный чек.
Согласно §20.4.1.1 / 8, deallocate
требует:
p должно быть значением указателя, полученным из allocate (). n должно быть равно значению, переданному как первый аргумент вызова allocate, который вернул p.
allocate
генерирует исключение, когда невозможно предоставить память (§20.4. 1.1 / 7). Другими словами, allocate
никогда не возвращает 0, и поэтому deallocate
никогда не должен получать 0. Передача 0 приведет к неопределенному поведению.