c ++分配*new Object()来引用

cIp*_*h3r 0 c++ allocation reference

我有一个关于在c ++中分配的问题.我有这个代码:

vector<unsigned char> &v = *new vector<unsigned char>();
Run Code Online (Sandbox Code Playgroud)

现在的问题是,取消引用对象并将其直接分配给引用通常是一个好主意吗?

在我看来,这使得使用对象变得更容易,因为现在你可以这样做:

v.push_back('a');
v[0];
Run Code Online (Sandbox Code Playgroud)

代替

v->push_back('a');
(*v)[0];
Run Code Online (Sandbox Code Playgroud)

最后,我能做到

delete &v;
Run Code Online (Sandbox Code Playgroud)

释放我的堆

仅仅因为(相同)好的答案的数量:我知道我可以只使用堆栈变量但在我的情况下,我需要它在堆上!但是使用堆或堆栈变量的问题是另一个问题.

所以我保持这个例子简单,特别是没有问我是否应该分配变量.

Mik*_*our 5

取消引用对象并将其直接分配给引用通常是个好主意吗?

一点都不.

如果您不需要动态分配,因为对象只需要持续与当前范围一样长,然后创建一个自动变量:

vector<unsigned char> v;
Run Code Online (Sandbox Code Playgroud)

如果你确实需要动态对象,那么试图伪装它是一种忘记它需要删除的好方法.最好的方法是使用智能指针,这样你根本不需要记住删除它; 如果失败了,请使用指针.