C++ CImg 访问冲突读取位置
C++ CImg Access violation reading location
我目前正在尝试学习如何使用 CImg 库,但我收到一个我不太明白的错误。 CImg 库中的构造函数文档也没什么帮助。基本思想是我想创建一个图像,以便我可以在第二步(未显示)中手动写入像素。但是,由于某种原因,拒绝访问使用 CImg 构造函数创建的图像。
这是一个最小的例子:
#include <iostream>
#include <CImg.h>
#include "Header.h"
using namespace std;
int Main() {
cimg_library::CImg<float> img(200, 200, 0, 3, 0.0);
cout << "img is: " << img(0, 0, 0, 0) << endl; //<----------------- error occurs here
return 0;
}
错误如下:
在 Test.exe 中的 0x0067B693 抛出异常:0xC0000005:访问冲突读取位置 0x00000000
如果能帮助理解这一点,我们将不胜感激!
最佳
蓝色
#
编辑:
我又尝试了 2 种方法,但不幸的是,两种方法都不起作用。
1st:我也尝试了 .data() 函数,但无济于事。更改数据类型(float、int、unsigned char)也没有解决问题,除了给出错误消息,指出整个事物现在将指向 NULL 向量(仍然拒绝访问)。
第 2 次:我改用指针:
cimg_library::CImg<unsigned char>* img = new cimg_library::CImg<unsigned char>(200, 200, 0, 3, 1);
cout << "img is: " << *img->data(0, 0, 0, 0) << endl;
虽然这仍然给出几乎相同的错误消息:
抛出异常:读取访问冲突。
cimg_library::CImg::data(...) 返回 nullptr。
不要将切片数设置为 0,而是设置为 1。否则你会得到一个没有像素的空图像 0x0x0x0,导致错误的内存访问。
我目前正在尝试学习如何使用 CImg 库,但我收到一个我不太明白的错误。 CImg 库中的构造函数文档也没什么帮助。基本思想是我想创建一个图像,以便我可以在第二步(未显示)中手动写入像素。但是,由于某种原因,拒绝访问使用 CImg 构造函数创建的图像。
这是一个最小的例子:
#include <iostream>
#include <CImg.h>
#include "Header.h"
using namespace std;
int Main() {
cimg_library::CImg<float> img(200, 200, 0, 3, 0.0);
cout << "img is: " << img(0, 0, 0, 0) << endl; //<----------------- error occurs here
return 0;
}
错误如下: 在 Test.exe 中的 0x0067B693 抛出异常:0xC0000005:访问冲突读取位置 0x00000000
如果能帮助理解这一点,我们将不胜感激!
最佳
蓝色
#编辑: 我又尝试了 2 种方法,但不幸的是,两种方法都不起作用。
1st:我也尝试了 .data() 函数,但无济于事。更改数据类型(float、int、unsigned char)也没有解决问题,除了给出错误消息,指出整个事物现在将指向 NULL 向量(仍然拒绝访问)。
第 2 次:我改用指针:
cimg_library::CImg<unsigned char>* img = new cimg_library::CImg<unsigned char>(200, 200, 0, 3, 1);
cout << "img is: " << *img->data(0, 0, 0, 0) << endl;
虽然这仍然给出几乎相同的错误消息: 抛出异常:读取访问冲突。 cimg_library::CImg::data(...) 返回 nullptr。
不要将切片数设置为 0,而是设置为 1。否则你会得到一个没有像素的空图像 0x0x0x0,导致错误的内存访问。