关于智能指针的一个问题

zy416548283 2014-08-28 10:38:09
这样定义了一个指针:
Ptr<Highway>* m_frontHighways;
其中,Ptr是类似于auto_ptr的一个智能指针,可以回收内存;
在构造函数中,这样初始化:

m_frontHighways = new Ptr<Highway> [1];


但是需要它指向一个Highway的数组,于是在其它函数中,又有这样的:

m_frontHighways = new Ptr<Highway>[m_numberOfLanes];


在析构函数中,是这样释放的:
delete [] m_frontHighways;

先说说我的理解:
m_frontHighways是一个指针,指向一个智能指针对象,这个智能指针对象又指向Highway的对象;
1.这里使用了两次new,但是只释放了一次,应该存在内存泄露吧?
2.为什么不直接使用一个智能指针,或者只使用普通的指针呢? 为什么会用这种用法?
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhao_test_123 2014-09-02
  • 打赏
  • 举报
回复
引用 8 楼 lm_whales 的回复:
这里有问题的是,智能指针的实现方式,适不适合构建智能指针数组
谢谢指点~
lm_whales 2014-09-01
  • 打赏
  • 举报
回复
这里有问题的是,智能指针的实现方式,适不适合构建智能指针数组
lm_whales 2014-09-01
  • 打赏
  • 举报
回复
因为它需要智能指针数组 所以这里没有任何问题
jwj070524 2014-08-28
  • 打赏
  • 举报
回复
智能指针是来管理new出来的对象的,但是智能指针本身不需要new,否则谁来管理智能指针对象的指针呢?

class SomeType {// ...};

smart_ptr<SomeType> ptr1(new SomeType); // count = 1
smart_ptr<SomeType> ptr2 = ptr1; // count = 2
ptr1.reset(); // count = 1
ptr2.reset(); // count = 0, auto deleted
  • 打赏
  • 举报
回复
new智能指针的做法比较2
xiao_dong_dong 2014-08-28
  • 打赏
  • 举报
回复
只能指针不是定义后然后直接用,也不用释放,会自己释放的吗 为啥要new一个只能指针呢?
就想叫yoko 2014-08-28
  • 打赏
  • 举报
回复
泄漏了。 你把智能指针看成一个对象就行了。
zhao_test_123 2014-08-28
  • 打赏
  • 举报
回复
引用 3 楼 jiuchang 的回复:
为什么要对智能指针使用指针呢?
别人写的代码,我也不知道哇,感觉有点奇怪
jiuchang 2014-08-28
  • 打赏
  • 举报
回复
为什么要对智能指针使用指针呢?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧