Я переопределил новый, чтобы я мог отслеживать распределение памяти. Дополнительные параметры, такие как __FILE__
, __LINE__
, имя модуля и т. Д., Добавляются в #define
.
Однако я хочу добавить адрес вызывающего объекта к параметрам, чтобы я мог отследить распределение при поиске проблем. Самый простой способ - добавить «this» к этим дополнительным параметрам (что означает, что адрес вызывающей стороны передается в мои пользовательские ресурсы alloc).
К сожалению, в нашем коде много синглетонов, что означает набор статических функций-членов, вызывающих new. Компилятор выдает ошибку C2671: '...' : static member functions do not have 'this' pointers
Есть ли обходной путь, при котором я могу получить адрес объекта без использования this
, который также понял бы, что это статический метод, и передал бы null скажем?
Или, может быть, мой #define
new распознает статический метод и переключится на другое определение?
Важно, чтобы я не влиял на существующий код проекта - я не хочу заставлять разработчиков использовать собственный метод, такой как staticnew, только потому, что он в статическом методе - они должны продолжать использовать новый, как обычно, все отслеживание памяти происходит в фоновом режиме ...