在许多情况下,我们在函数中动态声明一个指针,有时我们不想在函数返回时释放该内存,因为我们以后需要该内存。
我们可以返回该动态指针,然后释放它。我找到了一些跟踪记忆的方法。这是件好事:
#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;
}
答案 0 :(得分:0)
在您的问题中并不完全清楚,但如果您只想在代码中添加cout
语句以显示指针的值,则可以在不转换为{{1}的情况下执行此操作}。指针可以打印得很好:
int
在删除之前,您还don't need #include <iostream>
int *foo()
{
int* pInt = new int(77);
std::cout << pInt << std::endl; // pointers can be output just fine
return pInt;
}
int main()
{
int* pLostMem = foo();
std::cout << pLostMem << std::endl; // e.g. 0x16c2010
std::cout << *pLostMem << std::endl; // 77
delete pLostMem;
pLostMem = NULL;
std::cout << std::endl;
return 0;
}
检查。