首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ CImg访问冲突读取位置

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

Stack Overflow用户
提问于 2020-03-15 00:55:34
回答 1查看 118关注 0票数 0

我目前正在尝试学习如何使用CImg库,但是我得到了一个我不太理解的错误。CImg库中的构造函数文档也没有太大帮助。基本的想法是,我想创建一个图像,这样我就可以在第二步(未显示)手动写入像素。但是,由于某些原因,对使用CImg构造函数创建的映像的访问被拒绝。

下面是一个最小的例子:

代码语言:javascript
复制
#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

如果能帮助我们理解这一点,我们将不胜感激!

最好的

蓝色

编辑:我又试了两个,但不幸的是这两个都不起作用。

第一:我也尝试了.data()函数,但是没有用。更改数据类型(浮点型、整型、无符号字符)也没有解决问题,只是给出了一个错误消息,即现在整个事物将指向一个空向量(仍然拒绝访问)。

第二:我改用指针:

代码语言:javascript
复制
    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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-15 17:42:05

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60685142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档