Habs gelöst: Die Variabeln wurden nicht richtig initialisiert -> nix da hat wie (fast) immer recht.
Doch kann mir noch jemand erklären, warum der Fehler vom Anfang nur im Debug-Modus kam. Ich glaube der ist etwas pingeliger, aber was macht der genau anders als der Release-Modus?
mfg spacegaier
Der Debug-Modus prüft zur Laufzeit, ob nicht initialisierte Variablen verwendet werden (wie schon gesagt). Das soll dir helfen, Fehler aufzuspüren. Anders als z.B. bei Java haben die integralen Datentypen in C++ nämlich keinen Standardwert. Sie haben einfach gerade den Wert, der in ihrer Speicheradresse liegt, also quasi zufällig (und das kann ja nicht das sein, was du willst). Das bringt einen kleinen Geschwindigkeitsvorteil mit sich.
Natürlich sind solche Laufzeitüberprüfungen nicht gut für die Performance, deshalb finden sie im Release-Build auch nicht statt.
Wenn du deiner smallrect-Klasse einen Standardkonstruktor gibst und in diesem den einzelnen Member-Variablen Standardwerte zuweist, dann hast du dieses Problem nicht.