Освобождение памяти более проблематично, потому что во время освобождения памяти
отсутствует часть информации — все, что у нас есть, это указатель на
освободить, и мы не знаем, к какому чанку относится этот указатель. Мы
может пройти через chunks_ и проверить, попадает ли данный указатель в
между pData_ и pData_ + blockSize_ * numBlocks_.
из современного дизайна C ++ 2001, стр. 76
Если я правильно понимаю, алгоритм, описанный для проверки того, указывает ли данный указатель на элемент в данном массиве, включает сравнение двух указателей из разных массивов. Если оператор сравнения> = или <= (очень возможно?), тогда это приведет к неопределенному поведению.
Но автор не указал явно эту процедуру или оператор, который оставит эту проблему читателям. (Или автор допустил ошибку? Он может хотя бы дать подсказку.)
Одним из решений является использование! =, Которое сделает освобождение в 100 раз медленнее.
Или может быть, при определенных обстоятельствах, определенное неопределенное поведение может быть допущено. Тогда при каких обстоятельствах неопределенное поведение, упомянутое выше, можно с радостью перенести?
Задача ещё не решена.
Других решений пока нет …