Во многих случаях мы динамически объявляем указатель в функции, и иногда мы не хотим освобождать эту память при возврате функции, потому что нам нужна эта память позже.Можно ли отслеживать динамическую память?
Мы можем вернуть этот динамический указатель, а затем освободить его. Я нашел способ отслеживать эту память. Это хорошая вещь:
#include <iostream>
int foo()
{
int* pInt = new int(77);
int x = (int)pInt;
std::cout << std::hex << x << std::endl; // 3831d8
return x;
}
int main()
{
int* pLostMem = (int*)foo();
std::cout << pLostMem << std::endl; // 003831D8
std::cout << std::dec << *pLostMem << std::endl; // 77
if(pLostMem)
{
delete pLostMem;
pLostMem = NULL;
}
std::cout << std::endl;
return 0;
}
Что конкретно ваш вопрос? – Carcigenicate
Нет никакого способа в стандартном C++ отслеживать распределения памяти, кроме как фактически отслеживать их самостоятельно. Если вы выделите нужную вам память позже, то *** верните указатель *** в эту память. Не возвращайте 'int', который, возможно, не сможет удерживать указатель. –
Вот что [умные указатели] (http://en.cppreference.com/w/cpp/memory) из стандартной библиотеки C++. –