в общем-то опубликована эта штука давно (в составе mcse), но так и не доделана. и знают о ней не все.
деликер - средство обнаружения утечек ресурсов (в основном памяти). после завершения работы эльфа в прочем на телефоне создаётся файл memory.txt, в котором будут перечислены утечки.
главных файлов два - mem.cpp и mem.h, их и нужно добавлять в свои проекты. чтоб добавить деликер в свой проект, нужно удалить из проекта файл _cpp2.cpp, добавить mem.cpp, и в каждом включаемом .c или .cpp первой строчкой инклюдить mem.h. в мэйне первым же делом нужно вызывать trace_init(), а в elf_exit() нужно вызывать trace_done(). релизный конфиг должен содержать константу NDEBUG. в релизном конфиге эльф работает как и без деликера. для наглядности в приложенном эльфе-примере выделяются три блока памяти, которые при завершении его работы не удаляются. ещё раз обращаю внимание, в релизном конфиге эльф работает как и без деликера, так что для проверки собирайте debug версию. ну и реализован учёт очень небольшого количества функций, хотя самые главные есть. если кто предложит свои варианты для остальных функций, будем рады.
Я наверное немного неправильно написал. Внутри функции с переменным количеством аргументов мне нужно вызвать также функцию с переменным количеством входных аргументов. Т.е. прототип функции __original_CreateYesNoQuestionVA в приведенном мною выше кусочке кода такой: GUI *__original_CreateYesNoQuestionVA(int zero, ...);
Не, тут не правильно (поэтому и по два раза добавляло файлы)
BigHercules, практически невозможно так сделать, ты даешь функции указатель на массив аргументов, а не сам массив. А чтобы дать сам массив надо знать его размер (количество аргументов), но до выполнения функции его узнать нельзя.
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.