C ++ CImg访问冲突读取位置

问题描述 投票:0回答:1

我目前尝试学习如何使用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向量(仍然拒绝访问)。

第二:我切换到使用指针:

    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。

c++ cimg
1个回答
0
投票

不要将切片数设置为0但设置为1。否则,您将得到一个没有像素的空图像0x0x0x0,从而导致错误的内存访问。

© www.soinside.com 2019 - 2024. All rights reserved.