많은 경우에 함수에서 포인터를 동적으로 선언합니다. 함수 반환시 메모리를 나중에 사용하기 때문에 메모리를 해제하지 않으려합니다.동적 메모리를 추적 할 수 있습니까?
동적 포인터를 반환하고 나중에 해제 할 수 있습니다. 그 기억을 추적 할 방법을 찾았습니다.
#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'를 반환하지 마십시오. –
C++ 표준 라이브러리의 [스마트 포인터] (http://en.cppreference.com/w/cpp/memory)가 이에 해당합니다. –