注册 登录
编程论坛 C++教室

这个代码为什么总输出96个字节呢?

wolfcan 发布于 2021-12-25 23:11, 1306 次点击
这个代码和opencv有点联系,不知道大家有没有了解的。

    cv::Mat img(100, 100, CV_8U,cv::Scalar(255));
    cout << sizeof(img) << endl;

img是利用cv::mat建立的一个矩阵,维度是100*100,每个元素是8位的无符号整型,每个元素初始化为255。
我利用sizeof(img)输出是96个字节,不知道为什么。我猜这96个字节肯定不是对这个img矩阵所有元素描述的,那么这里的sizeof(img)统计的是谁呢?谢谢
2 回复
#2
rjsp2021-12-26 20:07
cout << sizeof(img) << endl;
等同于
cout << sizeof(cv::Mat) << endl;
输出的结构体的大小。

int a = 1;
sizeof(a) 等同于 sizeof(int),不会 a=99999 后 sizeof(a) 就变大

struct foo {
    const char* p;
};
foo a = { "aaa" };
foo b = { "bbbbbbbbbbbbbbbbbb" };
sizeof(a) 与 sizeof(b) 相等,因为它俩都是占一个指针的大小。
#3
wolfcan2021-12-28 16:10
回复 2楼 rjsp
谢谢版主
1