ich will innerhalb eines Programms einen 4k-Block mit new (oder malloc, ist egal) reservieren. new oder malloc liefern aber immer 0 zurück. Wenn ich an der selben Stelle weniger Speicher reservieren will klappt es. Laut Taskmanager ist mein Speicher nicht ausgelastet. Wenn ich ganz am Anfang des Programms eine Schleife mache, die einfach Speicher alloziert, kann ich problemlos GB-weise mein RAM füllen.
Hallo, die Fehlerfunktion liefert "No error". Der Code würde nicht viel helfen, ist ein normales new. Es sieht so aus, als würde ihm der Speicher ausgehen. Hab mal ein paar Tests gemacht. Ich glaube aber, dass er in der Release-Version das noch macht. Hat jemand eine Idee, ob es Heap-Grenzen gibt und wie die Einstellbar sind?
Wenn ich den auskommentierten Code auskommentiere kann ich an allen Stellen soviel Speicher haben wie ich will. Wenn ich ihn drin lasse geht die nächste größere allozierung schief:
C++:
for (z=0; z<data->bandCount; z++) // Durchlaufe alle Frequenzbänder { for (j=0; j<data->band[z].LDAITSteps; j++) // Durchlaufe alle Frequenzen { for (i=0; i<data->ldait_PCount; i++) // Durchlaufe alle Pegel {
wie sieht denn deine element2D-Funktion aus, evtl schreibst du auch einfach deinen Heap kaputt (C-Casts sind halt immer gefährlich) -- class God : public ChuckNorris { };
hab den Fehler beseitigt. Ich habe ein paar Byte über ein Array rausgeschrieben, wahrscheinlich ist dabei Verwaltungsinformation des Heaps flöten gegangen. Danach hat er gemeint, er hätte keinen Speicher mehr.