Переопределение «нового» и регистрация данных о звонящем

Я пытаюсь написать профилировщик памяти и до сих пор смог заставить мои пользовательские функции работать для malloc, free, new и delete. Я пытался с помощью__FILE__ а также__LINE__ для регистрации инициатора внутри перегруженного нового метода, но (как и ожидалось) он просто дает подробную информацию о том, где находится перегруженная функция. Есть ли способ получить подробные сведения об отправителе перегруженных функций без внесения каких-либо изменений в существующий код тестируемого компонента (например, #define для malloc)?

Я использую функцию:

void* operator new (size_t size)
{
    if(b_MemProfStarted)
    {
        b_MemProfStarted = false;
        o_MemLogFile << "NEW: " << "| Caller: "<< __FILE__ << ":"
                << __LINE__ << endl;
        b_MemProfStarted = true;
    }

    void *p=malloc(size);
    if (p==0) // did malloc succeed?
    throw std::bad_alloc(); // ANSI/ISO compliant behavior

    return p;
}

Bool b_MemProfStarted используется, чтобы избежать рекурсивных вызовов ofstream и map.insert.

Ответы на вопрос(2)

Ваш ответ на вопрос