C++: Ursache für Lesezugriffsverletzung?

Hallo,

ich komme an einer Stelle nicht weiter und könnte noch einmal Hilfe gebrauchen. Ich nutze die Bibliothek Libtiff um die Farbwerte von einem Bild in einen Vector zu speichern bekomme aber eine Lesezugriffsverletzung. Anbei der Code:

void GetImage(TIFF* tif)
{
	uint32 npixels = width * height * sizeof(uint32);
	uint32* raster;
	std::vector <uint32> image;
	raster = (uint32*)_TIFFmalloc(npixels);
	if (TIFFReadRGBAImageOriented(tif, width, height, raster, ORIENTATION_TOPLEFT, 0) == 1)
	{
		std::cout << npixels << std::endl;
		for (uint32 i = 0; i < npixels; i++)
		{
			image.push_back(raster[i]);
		}
		std::cout << image[0] << std::endl;
	};
}

TIFFReadRGBAImageOriented

speichert die Pixelwerte von einem Bild in die Variable "raster" mit der Größe von "npixels". Ich möchte diese Werte später verwenden und sie deshalb global abspeichern. Deshalb habe ich den Vector

std::vector <uint32> image;

deklariert und möchte mit der for-Schleife die Werte von raster in image kopieren.

Ich bekomme leider folgende Fehlermeldung:

Ausgelöste Ausnahme: Lesezugriffsverletzung

std::forward<unsigned int const & __ptr64>(...) hat 0x22A6E503000 zurückgegeben.

npixels = 482241600. Wenn ich bei der for-Schleife anstelle von npixels 48224160 schreibe (also eine 0 weglasse), bekomme ich keine Fehlermeldung mehr. "raster" scheint also mehr Werte zu haben, als man in den Vector "image" hineinschreiben kann. Zumindest interpretiere ich das Problem so.

Ist meine Interpretation richtig und wenn ja, was kann ich tun um die Werte von raster irgendwie global abzuspeichern.

Viele Grüße

CPP, Cpp Programierung