-1
#include <iostream>
#include <atlimage.h>
using namespace std;
void locate(CImage img, int i, int j)
{
img.GetPixelAddress(i, j);
};
int main()
{
CImage img;
img.Load(_T("./1.png"));
locate(img, 0, 0);
//img.GetPixelAddress(0, 0);
unsigned char * p = (unsigned char *)(img.GetPixelAddress(0, 0));
cout <<*p << endl;//give me a runtime error
return 0;
}
これは私にランタイムエラーをもたらします。私はWindowsでvs2015を使用しています。CImageをコピーするとランタイムエラーが発生します
#include <iostream>
#include <atlimage.h>
using namespace std;
void locate(CImage img, int i, int j)
{
img.GetPixelAddress(i, j);
};
int main()
{
CImage img;
img.Load(_T("./1.png"));
//locate(img, 0, 0);
img.GetPixelAddress(0, 0);
unsigned char * p = (unsigned char *)(img.GetPixelAddress(0, 0));
cout <<*p << endl;//works fine
return 0;
}
これはコンパイルされますが、上記のコードと基本的に同じです。 locate関数の部分を、実際に実行されるコードに置き換えます。これはコンパイラのバグですか?
。 – drescherjm
潜在的なコンパイラのバグを示唆するものは何もありません。私は、「CImage」が価値によってコピーされるのが好きではないという卑劣な気持ちを持っています。最初のパラメータを 'locate()'に 'CImage&img 'として宣言しようとしています。 –
ノブが問題を責めたたびにドルを払えば、私は引退できるコンパイラのバグに遭っていました。 – duffymo