Hallo,
ich wollte eine Klasse schreiben, die die bytes eines Grauwertbildes speichert, mit dem Zweck, manche Bildoperationen zu beschleunigen.
Die Klasse sieht so aus:
Dieser Code kompiliert und wenn ich am Ende des Konstruktors die Memory gucke, so sehe ich, dass alle Werte in m_pData auf den Wert bValue gesetzt sind. Aber wenn ich den Konstruktor verlasse, z.B. nach dem Aufruf GrayImage gi = new GrayImage(8, 8, 64); muss ich sehen, dass der gesetzte Wert vergessen ist, und im Byte-Array von gi zufällige Werte stehen: die Daten wurden verloren.
Ich kapiere ehrlich gesagt nicht, was ich hier falsch mache (und offensichtlich ist es so). Mit dem unsafe-Kapitel in C# habe ich irgendwie nicht so viel Erfahrung und Gefühl.
Dank für alle Tipps - A.K.
ich wollte eine Klasse schreiben, die die bytes eines Grauwertbildes speichert, mit dem Zweck, manche Bildoperationen zu beschleunigen.
Die Klasse sieht so aus:
Code:
public class GrayImage { public int Width{get;set;} public int Height{get;set;} private unsafe byte* m_pData; public GrayImage(int width, int height, byte bValue) { this.Width = width; this.Height = height; int nLength = this.Width * this.Height; unsafe { byte* pData = stackalloc byte[nLength]; this.m_pData = pData; } for (int i = 0; i < nLength; i++) { this.m_pData[i] = bValue; } } }
Ich kapiere ehrlich gesagt nicht, was ich hier falsch mache (und offensichtlich ist es so). Mit dem unsafe-Kapitel in C# habe ich irgendwie nicht so viel Erfahrung und Gefühl.
Dank für alle Tipps - A.K.
Comment