【发布时间】:2012-08-08 19:48:13
【问题描述】:
我是 C++ 新手,刚刚了解了动态内存和内存泄漏。
据我了解,在创建指针(int *ptr = new int),然后更改他指向的地址时,旧地址仍然存在/分配。
(如果我错了,请纠正我)。
所以我想到了这个:
int *ptr;
ptr = new int;
第一个 ptr 填充随机(或不?)地址,然后我更改它,所以旧的保留? 如果我尝试这段代码:
int *ptr;
cout << ptr << endl ;
ptr = new int;
cout << ptr << endl ;
我明白了:
0x401a4e
0x6d2d20
这是否意味着 0x401a4e 是内存泄漏的一部分?还是当 ptr 移动到动态内存时释放?它是如何工作的?
【问题讨论】:
-
应该指出的是,一旦您学习了内存管理的基础知识(请参阅下面的 Konrad Rudolph 以获得简洁的描述),那么您应该停止使用它,而不是通过智能指针/容器进行自动内存管理.在实际代码中,您很少手动管理 RAW 指针。
标签: c++