我是c ++的新手,我刚学会了动态内存和内存泄漏.
根据我的理解,在创建指针(int *ptr = new int),然后更改他指向的地址时,旧地址仍然存在/已分配.(如果我是冤枉,请纠正我).
所以我想到了这个:
int *ptr;
ptr = new int;
Run Code Online (Sandbox Code Playgroud)
第一个ptr是填充随机(或不是?)地址,然后我改变它,所以旧的地址保留?如果我尝试这个代码:
int *ptr;
cout << ptr << endl ;
ptr = new int;
cout << ptr << endl ;
Run Code Online (Sandbox Code Playgroud)
我明白了:
0x401a4e
0x6d2d20
Run Code Online (Sandbox Code Playgroud)
这是否意味着0x401a4e是内存泄漏的一部分?或者当ptr移动到动态内存时它会被释放吗?它是如何工作的?
可能重复:
使用引用而不是指针,解决C++中的内存泄漏问题?
当我问这个问题时
出现了一个新问题,我在这篇文章中提出了这个问题.
这段代码会泄漏内存吗?
class my_class
{
...
};
my_class& func()
{
my_class* c = new my_class;
return *c;
}
int main()
{
my_class& var1 = func();
// I think there is no memory leak.
return 0;
}
Run Code Online (Sandbox Code Playgroud)