我有两个指点:
int *a = new int;
int *b = new int;
现在我将b
设为等于a
:
b=a;
我关注的是b
最初指向的记忆。当我将b
重定向到指向a
指向的内存并且都指向相同的内存位置时。 b的先前内存位置怎么样,它是被释放还是内存泄漏?
为了防止内存泄漏,我应该这样做:
delete b;
b=a;
答案 0 :(得分:2)
这是泄密。
您应该使用智能指针。
答案 1 :(得分:1)
这是内存泄漏。您没有delete
new
- ed b
不再指向原始位置。试试这个:
int* a = new int;
int* b = new int;
int* originalb = b;
b = a;
delete originalb;
delete b; // or a
鉴于a
和b
保持不变
据说,首选smart pointers,containers和RAII为原始指针。