这将导致内存泄漏:
int var = *new int(5);这将不会(如果稍后释放):
int* var = new int(5); 问题:会导致内存泄漏吗?
int& var = *new int(5);是的,我应该使用智能指针,但这不是问题所在:)
发布于 2021-02-04 09:23:55
会导致内存泄漏。您在那里所做的是分配一个内存块,取消引用指针并将其赋值给变量var。当超出作用域时,动态内存分配不会自行释放,相反,变量var将被销毁,而不是您分配的指针。
要删除它,你需要做的就是这样,
int& var = *new int(5);
delete &var;发布于 2021-02-04 09:27:05
是的会的。我在中测试了它,它确实测试了它。无论您使用new,还是没有delete,都会有内存泄漏。您分配动态内存,但从未释放它。

发布于 2021-02-04 09:34:15
是的会漏水的。正如已经评论的那样,必须删除每一个新的内容。对于指定给引用&var的匿名堆变量int(5),应该有一个警告,该变量不再有合适的句柄可用。如另一个答案所建议的那样,删除引用是与引用的想法背道而驰的。引用和指针之间最重要的区别在于,期望引用总是有一个目标,而一个人必须期望一个指针正在悬空或为零,并且这样做。此外,还有一种范例,即一旦传递引用,就不会拥有它,所以删除是最后一次使用它。
https://stackoverflow.com/questions/66042616
复制相似问题