首页 > 编程语言 >C++仿SKData实现C原生指针管理

C++仿SKData实现C原生指针管理

时间:2024-07-01 20:31:09浏览次数:25  
标签:HBData isDeepCopy C++ other SKData len 指针 data size

template<typename T>
class HBData {
public:
    HBData(T* other_data, size_t other_size, bool release) : data(other_data), size(other_size), isDeepCopy(release) {}
    HBData(const HBData& other) {
        if(isDeepCopy && data)
            delete[] data;
        data = new T[other.size];
        auto len = sizeof(T) * other.size;
        memcpy_s(data, len, other.data, len);
        size = other.size;
        isDeepCopy = true;
    }
    ~HBData() {
        if(isDeepCopy && data)
            delete[] data;
    }
public:
    T* data = nullptr;
    size_t size = 0;
    bool isDeepCopy = false;
};

https://chromium.googlesource.com/external/skia/include/+/f2e084053cd1dbd21fa3cece80d70045b2b0b83b/core/SkData.h

C++自定义智能指针-CSDN博客


创作不易,小小的支持一下吧!

标签:HBData,isDeepCopy,C++,other,SKData,len,指针,data,size
From: https://blog.csdn.net/qq_30220519/article/details/140109232

相关文章

  • C/C++ Dijkstra(迪杰斯特拉)算法详解及源码
    Dijkstra(迪杰斯特拉)算法是一种用于寻找带权重图中的最短路径的算法。它由荷兰计算机科学家EdsgerDijkstra于1956年提出,被广泛应用于网络路由算法和地图路线规划等领域。算法思想:初始化一个距离数组,用于保存起点到每个顶点的当前最短距离(初始时将起点距离设置为0,其他顶......
  • 信息学奥赛一本通C++版 1081:分苹果 答案
    目录【链接】【题目描述】【输入】【输出】【输入样例】【输出样例】【答案】【链接】1081:分苹果1081:分苹果【题目描述】把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?【输入】一个不大于1000的......
  • 奥赛一本通C++版 1057解题思路(附加答案)
    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1057题目:解题思路:先定义两个整型变量a和b,一个字符变量c,依次输入a,b,c。接着判断输入的运算符号是否等于+ || - || * || /(注意,这里的符号用单引号括起来)。如果运算符号等于加号,则进行加法运算,把a和b相加,......
  • 用C++解决编程题目:角谷猜想
    学习目标:用C++编写简单的题目学习内容:#include<iostream>usingnamespacestd;intmain(){longlongn;cin>>n;while(n!=1){if(n%2==1){cout<<n<<"*3+1="<<n*3+1<<endl;n=3*n+1;......
  • C++实现简化版Qt的QObject(3):增加父子关系、属性系统
    前几天写了文章:C++实现一个简单的Qt信号槽机制C++实现简化版Qt信号槽机制(2):增加内存安全保障之后感觉还不够过瘾,Qt中的QObject体系里还有不少功能特性没有实现。为了提高QObject的还原度,今天我们将父子关系、属性系统等功能也一并实现。接口设计首先,我们设计一下我们的......
  • 超详细的 C++中的封装继承和多态的知识总结<1.封装>
    引言  小伙伴们都知道C++面向对象难,可是大家都知道,这个才是C++和C的真正区别的地方,也是C++深受所有大厂喜爱的原因,它的原理更接近底层,它的逻辑更好,但是学习难度高,大家一定要坚持下来呀,本章呢对于C++有关的知识开始讲解封装继承和多态。好了啦废话不多说,跟着小杨一起开始......
  • 华为OD机试D卷 --智能成绩表--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?输入描述第1行输入两个整数,学生人数n和科目数量m。0<n<1000<m<10第2行输入m个科目名称,彼......
  • 华为OD机试D卷 --最富裕的小家庭--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。输入描述第一行为一......
  • 华为OD机试D卷 --最多购买宝石数目--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例1用例2用例3用例4题目解析算法源码题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;......
  • ROS2创建简单的C++功能包
    1.创建功能包终端下,进入ws00_helloworld/src目录,使用如下指令创建一个C++功能包:ros2pkgcreatepkg01_helloworld_cpp--build-typeament_cmake--dependenciesrclcpp--node-namehelloworld执行完毕,在src目录下将生成一个名为pkg01_helloworld_cpp的目录,且目录中已经......