我可以从取消引用new的返回值中初始化引用吗?

问题描述 投票:0回答:1

如我所见,new在免费存储区中分配了一个未命名的对象,并返回了一个指向该未命名对象的指针。

因此我们可以创建对该对象的引用:

int* pi = new int(100);
int& ri = *pi;

我感兴趣的是,我可以在免费商店中创建一个对象,而无需通过将new的取消引用值分配给该引用,而无需将new的返回值分配给一个指针,而是将其分配给该未命名对象的引用:

int& x = *(new int(7));

cout << x << endl; // 7
x += 34;
cout << x << endl; // 41
  • 我想知道我能做到这一点还是一个坏主意?

感谢您提出任何建议,暗示或建议。 N.B:实际上,我尽量避免使用智能指针和STL容器来处理原始内存...

c++ dynamic-memory-allocation
1个回答
0
投票

是,可以。但是我认为这是一个坏主意。一旦该引用超出范围,您将无法释放动态内存(或者您只是忘记了,它是变相的动态内存),这很可能会导致内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.