Я реализую процесс распределения пользовательской памяти и глобально переопределяю новый, новый [] и удаляю, удаляю []. Распределение памяти принимает размер объекта и необязательный параметр «nObjects», где его количество объектов должно быть создано (по умолчанию - 1).Доступ к номеру, переданному в новый [] C++
Новые работы отлично, но с новым значением [] значение size_t просто возвращает общее значение nObjects * sizeOfObject. Поэтому у меня нет способа узнать количество объектов, которые действительно выделяются, просто размер.
Я смотрел в сборке, и количество объектов, безусловно, там, но меня спрашивает: есть ли безопасный способ доступа к нему в рамках глобального нового [] переопределения?
Спасибо.
EDIT:
Btw, я создаю пользовательские распределения так, что любой другой класс, который создается с ним не нужно делать ничего лишнего, чтобы учесть распределение памяти. например. Я могу просто создать класс any {} и выделить его, мне не нужно выводить его из чего-либо или добавлять что-либо лишнее в его конструктор/деструктор.
Причина, по которой я делаю это, слишком объясняет некоторые внешние применения нового, что у меня нет контроля над другими, кроме глобального переопределения.
Примечание: новое выражение вызывает два вызова: 1) распределение памяти с новым оператором. 2) построение объекта (объектов). Вы не должны заботиться о втором в своих пользовательских операциях new. –
Я сомневаюсь иначе [это] (http://stackoverflow.com/questions/3868962/how-do-you-get-the-size-of-array-that-is-passed-into-the-function) будет менее проблематичным. – NathanOliver
... см. Также http://en.cppreference.com/w/cpp/language/new –