簡體   English   中英

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

任何幫助理解這一點將不勝感激!

最好的事物

藍色

#

編輯:我嘗試了另外兩件事,但不幸的是兩者都不起作用。

第一:我也嘗試了 .data() 函數,但無濟於事。 更改數據類型(float、int、unsigned char)也沒有解決問題,除了給出整個事情現在將指向空向量的錯誤消息(仍然拒絕訪問)。

第二:我改用指針:

 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,從而導致錯誤的內存訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM