重定向指针会导致内存泄漏吗?

时间:2017-10-14 12:38:56

标签: c++ pointers

我有两个指点:

int *a = new int;
int *b = new int;

现在我将b设为等于a

b=a;

我关注的是b最初指向的记忆。当我将b重定向到指向a指向的内存并且都指向相同的内存位置时。 b的先前内存位置怎么样,它是被释放还是内存泄漏?

为了防止内存泄漏,我应该这样做:

delete b;
b=a;

2 个答案:

答案 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

鉴于ab保持不变 据说,首选smart pointerscontainersRAII为原始指针。