禁止使用new方法,修改下面代码unsigned char* dstbuffer = new unsigned char[width * 3];
时间: 2023-02-06 13:44:39 浏览: 96
您可以使用 `malloc` 来代替 `new` 操作:
```
unsigned char* dstbuffer = (unsigned char*) malloc(width * 3);
```
如果你想在分配内存失败时抛出异常,则可以使用 `calloc` 函数,它与 `malloc` 类似,但会将内存初始化为零:
```
unsigned char* dstbuffer = (unsigned char*) calloc(width, 3);
```
如果您的代码使用的是 C++,则您还可以使用 `std::vector` 来替换动态分配的内存:
```
std::vector<unsigned char> dstbuffer(width * 3);
```
注意,使用 `malloc` 和 `calloc` 函数时,您需要手动释放分配的内存,例如使用 `free` 函数:
```
free(dstbuffer);
```
而使用 `std::vector` 则无需手动释放内存,它会在您不再使用它时自动释放内存。
相关问题
unsigned char* dstbuffer = new unsigned char[width * 3];
unsigned char* dstbuffer 是一个无符号字符型的指针。它指向一个新的无符号字符型的数组,数组的大小为 width * 3。这个数组的每个元素都是一个无符号字符,也就是说,它们的值都在 0 到 255 之间。这个指针可以用来存储一个由宽度个无符号字符组成的序列,每个无符号字符占用 3 个字节。
Mat转unsigned char*
Mat转换为unsigned char*的代码如下:
```cpp
Mat image; // 假设已经读入了一张图像
unsigned char* data = image.data; // 获得图像数据指针
// 将Mat转换为unsigned char*
int width = image.cols;
int height = image.rows;
int channels = image.channels();
unsigned char* imageData = new unsigned char[width * height * channels];
int index = 0;
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
for (int c = 0; c < channels; c++) {
imageData[index++] = data[row * width * channels + col * channels + c];
}
}
}
```
此代码将Mat对象转换为unsigned char*类型的图像数据。注意,这个数据不是连续的,每个像素的数据可能不在相邻的位置上。因此,当你需要访问像素时,需要使用适当的索引计算方法。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)