Недавно наткнулся на этот пост, где человек не мог понять, в чём у него ошибка. Конкретно его ошибку не нашёл, на моём компе это выглядело как вечный цикл, но я заметил вот что:
Взгляните на эти две посылки: TL и OK.
И в той и в другой посылке используется самописный вектор, но разница в том, что в OK посылке не используется оператор delete[]
в деструкторе, потому деструктор работает значительно быстрее, но при этом не освобождает память (что можно заметить, посмотрев в графу память).
На моей машине рантайм примерно такой:
Без векторов | 248ms
Вектора без деструктора | 370ms
Вектора с деструктором | 948ms
Вопрос в том, почему оператор delete[]
работает так медленно, и может ли кто-то дать линк, где можно прочитать об этом? Гугл ведёт на линки уровня "напишем свой менеджер памяти на c++", что, несомненно, интересно, но это не совсем то, что я пытаюсь найти.