Speicherfehler, wenn Klasse zu groß?
-
Gegeben ist
const int x = 5; const int y = 5; const int n = 4; const int nwp = 4*x*y - 3*x*n - 3*y*n + 3*x + 3*y - 4*n + 2*n*n + 2; class Foo { public: int p; int f[x][x]; int np; int sc[2][nwp]; bool wp[x][y][nwp]; CArray<Bar*> em; };
Sobald x jetzt 6 wird, kommt ein Speicherfehler (eine Instanz dieser Klasse wird in CDialog::OnInitInstance erzeugt, der Fehler tritt aber außerhalb der Funktion auf). Mit x==5 funktioniert alles.
Wieso?EDIT:
wenn die Größe der Klasse4* (1 + x*y + 1 + 2*nwp + x*y*nwp + 12)
Bytes ist, dann ergibt sich für
x = 6; y = 5; n = 4; size == 5168
, für x=5 nur 3180 Bytes! Vielleicht liegt es daran, dass der MFC-Speichermanager nur Klassen <1kB verwalten kann? (d.h. ich muss einen Zeiger auf wp statt wp selbst speichern?)
[ Dieser Beitrag wurde am 06.04.2003 um 18:11 Uhr von Norondion editiert. ]
-
vielleicht stack overflow? erstell die instanz mal per new
-
wird mit bereits new erstellt
-
1.) Was hat der Speichermanager mit den MFC zu tun?
2.) Das kann man aber bestimmt irgendwo umstellen...
-
zu 1.): Mit der MFC werden new und delete anders definiert als ohne, glaube ich
-
Original erstellt von Norondion:
zu 1.): Mit der MFC werden new und delete anders definiert als ohne, glaube ichAlso in den MFC steht nix von new und delete. Meinst sicher den MSVC