[英]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.