当前位置: 首页 > news >正文

杭州旅游网站建设网站建设报价是多少

杭州旅游网站建设,网站建设报价是多少,wordpress生成静态教程,唐山制作网站的公司概述 智能指针是行为类似指针的类#xff0c;在模拟指针功能的同时提供增强特性#xff0c;如针对具有动态分配内存对象的自动内存管理等。 自动内存管理主要是指对超出生命周期的对象正确并自动地释放其内存空间#xff0c;以避免出现内存泄漏等相关内存问题。智能指针对…概述 智能指针是行为类似指针的类在模拟指针功能的同时提供增强特性如针对具有动态分配内存对象的自动内存管理等。 自动内存管理主要是指对超出生命周期的对象正确并自动地释放其内存空间以避免出现内存泄漏等相关内存问题。智能指针对每一个RefBase对象具有两种不同的引用形式。强引用持有对一个对象的直接引用。 具有强引用关系的对象在该强引用关系存在时同样也应当存在也即该引用关系有效弱引用持有对一个对象的间接引用。 具有弱引用关系的对象在该弱引用关系存在时并不保证存在。 注意上述描述仅当正确使用智能指针时才成立。 实现原理 智能指针通过引用计数来实现所指向对象内存的自动管理。每一个可以被智能指针管理的对象都持有一个引用计数器引用计数器在相关引用计数清0时会调用一个用于销毁该对象的回调函数。 引用计数器记录了对应RefBase对象的两种不同引用计数值以及对于其本身即RefCounter对象的引用计数值。 涉及功能 OHOS::sptr 模块: SmartPointer 指向RefBase(或其子类)对象的强引用智能指针。 具体描述 template typename T class OHOS::sptr;指向RefBase(或其子类)对象的强引用智能指针。 模板参数: T 被sptr管理的具体类型。该类必须继承自RefBase基类。 其直接引用RefBase对象。 #include refbase.h 接口说明 OHOS::wptr 模块: SmartPointer 指向RefBase(或其子类)对象的弱引用智能指针。 具体描述 template typename T class OHOS::wptr;指向RefBase(或其子类)对象的弱引用智能指针。 模板参数: T 被wptr管理的具体类型。该类必须继承自RefBase基类。 其间接引用RefBase对象直接引用WeakRefCounter对象。 #include refbase.h 接口说明 使用示例 使用方法(伪代码) #include ../include/refbase.h #include iostreamusing namespace std; using namespace OHOS;// 管理目标类 class RefBaseTest : public RefBase { public:virtual void Access(){coutAccess RefBaseTest::Showendl;}~RefBaseTest() override{cout RefBaseTest destroyed endl;} };// 管理目标类的子类 class SubRefBaseTest : public RefBaseTest { public:void Access() override{coutAccess SubRefBaseTest::Showendl;}~SubRefBaseTest() override{cout SubRefBaseTest destroyed endl;} };int main() {// 1. 使用新创建智能指针管理新创建对象sptrRefBaseTest newSptr(new RefBaseTest());wptrRefBaseTest newWptr(new RefBaseTest());// 2. 使用上述智能指针管理另一个新创建对象// 原管理对象析构newSptr new RefBaseTest();newWptr new RefBaseTest();// 3. 使用新创建智能指针指向其他现存智能指针管理对象sptrRefBaseTest curSptr(newSptr);wptrRefBaseTest curWptr(newWptr);if (curSptr-GetSptrRefCount() 2 curSptr-GetWptrRefCount() 2 // 2: countcurWptr-GetWptrRefCount() 1) {cout curSptr run as expected endl;}// 4. 使用现存智能指针管理其托管类型的子类对象sptrSubRefBaseTest subSptr(new SubRefBaseTest());wptrSubRefBaseTest subWptr(new SubRefBaseTest());curSptr subSptr;curWptr subWptr;// 5. 通过-运算符访问成员curSptr-Access();curWptr-Access();// 6. 通过*运算符解引用(*curSptr).Access();(*curSptr).Access();// 7. 两种智能指针可以管理对方所管理的对象sptrRefBaseTest scurSptr(new RefBaseTest);wptrRefBaseTest scurWptr(new RefBaseTest);wptrRefBaseTest snewWptr(scurSptr);sptrRefBaseTest soldSptr(new RefBaseTest);wptrRefBaseTest soldWptr(new RefBaseTest);soldSptr scurWptr; // sptr仅可通过拷贝赋值管理wptr所管理对象soldWptr scurSptr; // 原本的引用关系将被释放if (snewWptr-GetWptrRefCount() 3 soldSptr-GetSptrRefCount() 1 // 3: countsoldWptr-GetWptrRefCount() 3) { // 3: countcout Smart Pointer assignment run as expected endl;}// 8. wptr可升级为sptrsptrRefBaseTest spromotedWptr snewWptr.promote(); // 升级失败时返回空sptr对象即未管理具体对象的sptr对象if (spromotedWptr-GetSptrRefCount() 2 spromotedWptr-GetWptrRefCount() 4) { // 2, 4: countcout Promote run as expected endl;}return 0; }测试用例编译运行方法 测试用例代码参见 base/test/unittest/common/utils_refbase_test.cpp 使用开发者自测试框架使用方法参见 开发自测试执行框架-测试用例执行 使用以下具体命令以运行refbase.h对应测试用例 run -t UT -tp utils -ts UtilsRefBaseTestdebug功能 RefTracker作为debug工具被添加入refbase文件中以便开发者对RefBase相关问题进行定位。该功能需要重新编译动态库替换系统原有动态库来上机使用如是静态依赖则需开发者独立审视使能方法。 全局追踪 全局追踪功能通过编译宏控制可以追踪全局的RefBase及其子类的轨迹但同时会对整机性能造成影响。 全局追踪中我们提供了立即打印模式及非立即打印模式。立即打印模式会在每次引用计数发生变化时对计数进行打印。非立即打印模式会在RefBase及其子类对象析构时对轨迹进行打印。 全局追踪、立即打印编译命令 ./build.sh --product-name xxx --ccache --build-target commonlibrary/c_utils/base:utils --gn-args c_utils_debug_refbasetrue --gn-args c_utils_track_alltrue --gn-args c_utils_print_track_at_oncetrue全局追踪、非立即打印编译命令 ./build.sh --product-name xxx --ccache --build-target commonlibrary/c_utils/base:utils --gn-args c_utils_debug_refbasetrue --gn-args c_utils_track_alltrue独立追踪 独立追踪功能同样能通过编译宏控制。我们为开发者提供了RefBase::EnableTracker()接口来对某个具体实例使能追踪功能。独立追踪对性能影响很小可以忽略不计。在独立追踪中我们能同样提供了立即打印及非立即打印模式。 独立追踪、立即打印编译命令 ./build.sh --product-name xxx --ccache --build-target commonlibrary/c_utils/base:utils --gn-args c_utils_debug_refbasetrue --gn-args c_utils_print_track_at_oncetrue独立追踪、非立即打印编译命令 ./build.sh --product-name xxx --ccache --build-target commonlibrary/c_utils/base:utils --gn-args c_utils_debug_refbasetrue使用方法 编译动态库编译产物路径为./out/xxx/commonlibrary/c_utils/libutils.z.so。 编译产物需要推入系统进行替换64位系统位于/system/lib64/32位系统位于/system/lib/。 追踪结果通过log打印。格式如下 // 立即打印 (sptr pointer) start tracking (sptr pointer) call (RefBase pointer). strong: x weak: x refcnnt: x ... (sptr pointer) call (RefBase pointer). strong: x weak: x refcnnt: x (sptr pointer) end tracking// 非立即打印 (sptr pointer) start backtrace (sptr pointer) call (RefBase pointer). strong: x weak: x refcnnt: x PID: xxx TID: xxx ... (sptr pointer) call (RefBase pointer). strong: x weak: x refcnnt: x PID: xxx TID: xxx (sptr pointer) end backtrace常见问题 使用本实现智能指针时同时使用裸指针或std标准库智能指针(std::shared_ptr) 会造成管理冲突导致非法访问以及未定义行为如内存重复释放。 因此也不推荐先创建裸指针后再使用智能指针管理。 RefBase* a new RefBase(); sptrRefBase s a; // 或 sptrRefBase s(a); // 裸指针a容易被误delete,造成sptr功能失常智能指针需构造在栈上管理的对象需要在堆上(动态分配对象) 智能指针若构造在堆上则不符合定义。管理对象若构造在栈上则会自动释放错误绕开智能指针管控。 智能指针不保证线程安全使用者需保证线程安全以避免同时对同一个sptr对象赋值等操作 避免通过隐式转换构造智能指针对象 易造成误解。因编译器优化程度具有不确定的行为易造成问题。 不建议使用对象指针构造智能指针对象 外部提前以指针形式释放对象后继续通过智能指针中使用sptr引用计数为0释放对象对象指针依旧在外被继续使用 Refbase *a new Refbase(arg1, arg2); sptrRefbase sp1 a; // 不建议对象指针a暴露在外存在风险 sptrRefbase sp2(a); // 不建议对象指针a暴露在外存在风险 sptrRefbase sp3 sptrRefbase::MakeSptr(arg1, arg2); // 建议在内部构造Refbase对象直接交与sptr管控使用wptr使用注意 在未设置ExtendObjectLifetime的情况下wptr不参与被管理对象的生命周期控制对象生命周期由sptr的引用计数控制但在极特殊情况下存在例外 // 由于历史设计原因可以在sptr不存在的情况下基于对象指针创建wptr对象。 // 在未设置ExtendObjectLifetime且无sptr被创建的特殊少见情况下为了防止内存泄漏在wptr引用计数归0时会释放管理对象 Refbase *a new Refbase(arg1, arg2); wptrRefbase wp1(a); wp1 nullptr; // 弱引用计数归0对象释放应避免再次手动释放wptrRefbase wp2 new Refbase(arg1, arg2); wp2 nullptr; // 弱引用计数归0对象释放这种情况无法手动释放, 如果wptr不能控制对象释放则必然会发生内存泄漏为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05 《鸿蒙开发学习手册》 如何快速入门https://qr21.cn/FV7h05 基本概念构建第一个ArkTS应用…… 开发基础知识https://qr21.cn/FV7h05 应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05 Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列…… 鸿蒙开发面试真题含参考答案https://qr18.cn/F781PH 鸿蒙开发面试大盘集篇共计319页https://qr18.cn/F781PH 1.项目开发必备面试题 2.性能优化方向 3.架构方向 4.鸿蒙开发系统底层方向 5.鸿蒙音视频开发方向 6.鸿蒙车载开发方向 7.鸿蒙南向开发方向
http://www.pierceye.com/news/286535/

相关文章:

  • mvc做的网站wordpress 新建php文件
  • 西安网站seo外包个人开发者
  • 注册网站需要visa怎么办济宁万达网站建设
  • niche网站建设wordpress安装文本编辑器
  • 网站建设三种方法免费的导航页
  • 微信到wordpress杭州网站怎么做seo
  • 沙田镇仿做网站网站加速器quickq
  • 武进网站建设医药公司网站建设
  • 专业做网站建设广告设计网站素材
  • 成都建设银行保安招聘网站深圳做兼职的网站设计
  • 做网站如何找广告商湖南网站建设kaodezhu
  • 宁波专业的网站搭建公司天津网站建设技术托管
  • 做水果网站特点分析报告怎样在百度上注册自己的公司
  • 800元五合一建站上海企业排行榜
  • 学校建设网站前的市场分析上海到北京火车时刻表查询
  • 科技企业网站设计网站开发费如何入账
  • 网站主体必须要与域名注册人相同网页设计尺寸标准
  • wordpress建淘宝客网站吗网站建设与维护技术浅谈论文
  • 网站建设 技术方案网站建设的指导书
  • ps网站首页怎么做google 浏览器
  • 网站建设数据库软件制作公司宣传片哪家好
  • 高端建站模版大兴模版网站建设哪家好
  • 帝国cms怎样做网站迁移西安网站设计公司排名
  • 网站建设三折页做僾网站
  • 长沙的网站建设公司上海做网站的哪家好
  • 网站开发做什么网站建设银行北京冬奥会纪念币发行时间
  • 企业怎么建设网站网站建设与管理计划
  • 域名怎么制作网站旅游线路设计方案模板
  • 专门做mmd的网站wordpress 免费商城
  • 简洁大气国内企业网站房产网签备案是什么意思