Средство выделения C++ <X>:: освободить (ПУСТОЙ УКАЗАТЕЛЬ, 1) позволенный?

Оба free(NULL) и ::operator delete(NULL) позволяются. Делает понятие средства выделения (например, станд.:: средство выделения также позволяет deallocate(NULL,1), или это требуется поместить Вашу собственную защиту вокруг этого?

7
задан JasonMArcher 15 August 2014 в 22:51
поделиться

1 ответ

Вам нужно будет добавить свой собственный чек.

Согласно §20.4.1.1 / 8, deallocate требует:

p должно быть значением указателя, полученным из allocate (). n должно быть равно значению, переданному как первый аргумент вызова allocate, который вернул p.

allocate генерирует исключение, когда невозможно предоставить память (§20.4. 1.1 / 7). Другими словами, allocate никогда не возвращает 0, и поэтому deallocate никогда не должен получать 0. Передача 0 приведет к неопределенному поведению.

10
ответ дан 7 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: