NCNN源码学习(1):Mat详解

前言:最原始的发行版本代码比较简洁,我们从2017年ncnn第一次开源的版本阅读mat的源码。阅读源码味如嚼蜡,下面就开始吧!

目录

构造函数

内存分配

数据成员

申请和释放内存

引用计数

辅助函数

填充函数fill

参考


构造函数

ncnn提供了8种构造函数的方式。

    // empty
    Mat();
    // vec
    Mat(int w);
    // image
    Mat(int w, int h);
    // dim
    Mat(int w, int h, int c);
    // copy
    Mat(const Mat& m);
    // external vec
    Mat(int w, float* data);
    // external image
    Mat(int w, int h, float* data);
    // external dim
    Mat(int w, int h, int c, float* data);

其中包含了一维的vector,二维的image,三维数据,拷贝构造函数。

拷贝构造函数具体的写法如下:

inline Mat::Mat(const Mat& m)
    : dims(m.dims), data(m.data), refcount(m.refcount)
{
    if (refcount)
        NCNN_XADD(refcount, 1);

    w = m.w;
    h = m.h;
    c = m.c;

    cstep = m.cstep;
}

其中refco

相关推荐

  1. NCNN学习(1):Mat详解

    2024-07-12 22:58:04       19 阅读
  2. [NCNN学习笔记]-1

    2024-07-12 22:58:04       41 阅读
  3. go 学习1:scanner学习

    2024-07-12 22:58:04       27 阅读
  4. PyTorch项目学习1

    2024-07-12 22:58:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 22:58:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 22:58:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 22:58:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 22:58:04       69 阅读

热门阅读

  1. Spring Boot对接大模型:实战价值与技巧

    2024-07-12 22:58:04       20 阅读
  2. 算法学习记录3

    2024-07-12 22:58:04       21 阅读
  3. linux的CUDA、torch和驱动GPU驱动的对应问题

    2024-07-12 22:58:04       19 阅读
  4. 递归函数遍历格式化字典

    2024-07-12 22:58:04       22 阅读
  5. 【LeetCode】2089. 找出数组排序后的目标下标

    2024-07-12 22:58:04       22 阅读
  6. 简谈设计模式之单例模式

    2024-07-12 22:58:04       20 阅读
  7. Linux文件系统

    2024-07-12 22:58:04       18 阅读
  8. 进程的阻塞

    2024-07-12 22:58:04       24 阅读
  9. 连接docker私有仓库

    2024-07-12 22:58:04       22 阅读