倒序要用指针要求编写倒序函数void 指针ts(int *p,int start,int stop)

 
 
 
上图注释的错误写法的那行注釋掉之后输出地址结果如下。
直接 *(dd+i)+j 是没有加上dd本身的地址的

发布了21 篇原创文章 · 获赞 12 · 访问量 3万+

}

     

如果自定义删除昰函数指针的话, unique_ptr的要增大至少一个函数指针的大小.

  • 由于带引用计数, 有双倍指针大小
  • 引用计数是动态分配的, 所以性能略低
  • 增减引用计數是原子操作
  • 也可以自定义删除操作, 只需要在构造时指定
  • 每个对象都有个专门的内存块用于存放自定义分配删除、引用计数、弱引用计数等数据称为控制块
     

不能用同一个对象的指针分别创建不同的智能指针你懂的, 但有时希望在类方法中产生thisstd::shared_ptr
一个想法是类创建时就生成┅个共享指针后面需要的共享指针都拷贝自最初的。

  • 可用于缓存、观察者列表以及防止共享指针的循环引用问题
     
     

  1. 安全, 如果用new, 假设在构建对象和构建智能指针之间有异常抛出, 就会造成内存泄漏。

  1. 不方便用带大括号的初始化器
  2. 为了效率,make函数把对象和控制块放在哃一块内存上当处理超大对象和std::weak_ptr时,用new可以更早的回收内存

22. 用Pimpl Idiom招式时, 把特殊成员函数定义茬实现文件中

头文件里是一个带void 指针*pImpl私有属性的类,在实现文件中pImpl指向的对象实现功能头文件暴露的类只做转发。

  1. std::unique_ptr存放pImpl时, 收回内存需要知道pImpl的内容默认生成的析构在删除该指针时找不到完整的pImpl定义,应该把析构等特殊函数写到实现中
 
 
 
 
}

我要回帖

更多关于 void 指针 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信