据我所知,最好使用智能指针,而不是通过原始指针管理动态分配对象的生命周期,例如: MyObject* obj = new Object();
但是在某些框架/库中,它们总是返回/使用原始指针而不是智能指针(也许它们有自己的GC对象?我不知道).
它也更容易使用
MyObject* obj = GetAObject(); // return raw owning pointer
Run Code Online (Sandbox Code Playgroud)
比
SharedPointer<MyObject> obj = GetAObject(); // return smart pointer
Run Code Online (Sandbox Code Playgroud)
应该总是使用智能指针而不是手动new/ delete(如上例所示),还是应该使用原始资源拥有指针?
如果您的代码不需要使用pre-C++ 11编译器进行编译,我认为没有理由拥有原始指针.
甚至如果你的代码需要与古老的编译器来编译,您应该从升压检查出的智能指针.
我不知道一个拥有原始指针是个好主意的情况.
如果合适,非拥有原始指针没有错.
确实很多代码仍然使用拥有原始指针.这主要应分为两类:
指针的使用应该通过您尝试在应用程序中建模的所有权语义来告知.
如果你的库返回指向库管理的内存的原始指针,那么原始指针绝对没问题.如果它返回指向应用程序应该拥有的内存的指针,那么智能指针是更好的选择,因为您可以忘记内存管理,并且代码会记录您的意图.
| 归档时间: |
|
| 查看次数: |
1003 次 |
| 最近记录: |