Hallo,
ich habe ein kleines Problem mit „Speicherverwaltung“, vielleicht kann mir ja jemand helfen.
Hintergrund des Problems:
Ich möchte ein Programm schreiben, dass Signale (hier: Impulse) analysiert um deren Werte zu ermitteln wie z.B. Hochpunkt, Tiefpunkt, Pulsdauer, usw. Die Impulsdaten erhalte ich vom Scope in Form einer Textdatei in der deren Punkte enthalten sind.
Problem:
Ich habe es anfangs mit einem Array von [2000] gearbeitet und alles hat wunderbar geklappt dann aber wurde mir gesagt, dass es auch mit mindesten 1mio Datenpunkten funktionieren soll. Ich habe schlichtweg die Arraygröße dementsprechend vergrößert und was passierte wohl: Speicher übergelaufen
Frage 1
######
Mittlerweile habe ich alles im Griff, ich habe immer die Arrays auf Reserve aufgestockt und so klappt alles, aber das erscheint mir nicht ganz als elegante Lösung und außerdem habe ich Angst, dass ich wirklich mal an die Grenzen des Pcs komme deswegen meine erste Frage
----1) Kann ich wirklich beim Rechner den Speicher vollaufen lassen? Ich habe einen Array [4mio] (double) und mehrere mit [50k] (double, int) und es werden noch einige dazukommen. Ich habe keinerlei Erfahrung mit so was und habe auch überhaupt kein Gefühl das einschätzen zu können.
Frage 2
######
Ich arbeite mit einer Klasse und dachte ich kann etwas tricksen indem ich einfach in einer Methode ein Array[50k] erstelle, da es ja beim Schließen wieder gelöscht wird, aber da ist der Speicher ebenfalls vollgelaufen (denke mal der Stack hats nicht verkraftet).
Dann dachte ich an dynamische Speicherverwaltung (new, delete) und da wäre meine nächste Frage
----2)Ich kann im normalen main() mit „new“ und „delete“ Zeiger erstellen und wieder löschen, aber wie kann ich das in einer Klasse realisieren? Ich möchte in „private“ einen Zeiger haben, diesen je nachdem wann ich den brauche initialisieren und damit auch in „verschiedenen“ Methoden damit arbeiten können und dann natürlich auch wieder freigeben, das heißt: ich will den Zeiger nicht in einer Methode initialisieren, wo diese am Ende wieder gelöscht wird, sondern möchte diesen auch im „private-Bereich“ für andere Methoden zugänglich machen und bei Bedarf löschen.
Hoffe ich habe mich verständlich ausgedrückt oder ihr könnt wenigstens erahnen was ich meine
bin da nicht der Hellste in der Thematik
Danke im Voraus
mf
ich habe ein kleines Problem mit „Speicherverwaltung“, vielleicht kann mir ja jemand helfen.
Hintergrund des Problems:
Ich möchte ein Programm schreiben, dass Signale (hier: Impulse) analysiert um deren Werte zu ermitteln wie z.B. Hochpunkt, Tiefpunkt, Pulsdauer, usw. Die Impulsdaten erhalte ich vom Scope in Form einer Textdatei in der deren Punkte enthalten sind.
Problem:
Ich habe es anfangs mit einem Array von [2000] gearbeitet und alles hat wunderbar geklappt dann aber wurde mir gesagt, dass es auch mit mindesten 1mio Datenpunkten funktionieren soll. Ich habe schlichtweg die Arraygröße dementsprechend vergrößert und was passierte wohl: Speicher übergelaufen
Frage 1
######
Mittlerweile habe ich alles im Griff, ich habe immer die Arrays auf Reserve aufgestockt und so klappt alles, aber das erscheint mir nicht ganz als elegante Lösung und außerdem habe ich Angst, dass ich wirklich mal an die Grenzen des Pcs komme deswegen meine erste Frage
----1) Kann ich wirklich beim Rechner den Speicher vollaufen lassen? Ich habe einen Array [4mio] (double) und mehrere mit [50k] (double, int) und es werden noch einige dazukommen. Ich habe keinerlei Erfahrung mit so was und habe auch überhaupt kein Gefühl das einschätzen zu können.
Frage 2
######
Ich arbeite mit einer Klasse und dachte ich kann etwas tricksen indem ich einfach in einer Methode ein Array[50k] erstelle, da es ja beim Schließen wieder gelöscht wird, aber da ist der Speicher ebenfalls vollgelaufen (denke mal der Stack hats nicht verkraftet).
Dann dachte ich an dynamische Speicherverwaltung (new, delete) und da wäre meine nächste Frage
----2)Ich kann im normalen main() mit „new“ und „delete“ Zeiger erstellen und wieder löschen, aber wie kann ich das in einer Klasse realisieren? Ich möchte in „private“ einen Zeiger haben, diesen je nachdem wann ich den brauche initialisieren und damit auch in „verschiedenen“ Methoden damit arbeiten können und dann natürlich auch wieder freigeben, das heißt: ich will den Zeiger nicht in einer Methode initialisieren, wo diese am Ende wieder gelöscht wird, sondern möchte diesen auch im „private-Bereich“ für andere Methoden zugänglich machen und bei Bedarf löschen.
Hoffe ich habe mich verständlich ausgedrückt oder ihr könnt wenigstens erahnen was ich meine

Danke im Voraus
mf