Nadpisywanie „nowych” i danych logowania o dzwoniącym

Próbuję napisać profiler pamięci i jak dotąd udało mi się uruchomić moje niestandardowe funkcje w malloc, free, new i delete. Próbowałem użyć__FILE__ i__LINE__ aby zarejestrować inicjatora w przeciążonej nowej metodzie, ale (zgodnie z oczekiwaniami) podaje tylko szczegóły dotyczące miejsca przeciążenia. Czy istnieje sposób na pobranie szczegółów dotyczących inicjatora do przeciążonych funkcji bez wprowadzania zmian w istniejącym kodzie testowanego komponentu (np. #Define dla malloc)?

Używana przeze mnie funkcja to:

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;
}

Funkcja bool b_MemProfStarted jest używana do unikania rekurencyjnych wywołań funkcji ofstream i map.insert.

questionAnswers(2)

yourAnswerToTheQuestion