Große Datenmengen, Array aufteilen



  • Hallo,

    ich habe bei meinem Projekt das Problem, dass die Datenmengen so groß sind, dass der Stack überläuft. Ich verarbeite Bilddaten. Diese schreibe ich in Arrays. Da bei einem Bild mit der Auflösung 640x480 über 300000 Einträge in das Array geschrieben werden gibt es Probleme.

    Als Lösung möchte ich gern in das Array, welches bearbeitet wird nur ein Teil der Bilddaten schreiben, diese bearbeiten und das Array dann mit weiteren Bilddaten neu beschreiben.
    Bei der Verarbeitung treffe ich eine Entscheidung für jedes Pixel. Die postiven Entscheidungen sollen pro Bild gespeichert und mit einem Schwellwert bewertet werden.

    Wichtig ist jetzt erstmal die Teilung des Bildes in sich änderende Arbeits-Arrays. Leider bekomm ich das nicht so recht hin 😞

    Ich hoffe, ihr versteht, um was es geht?!



  • Array nicht auf dem Stack, sondern dem Heap anlegen. Ggf. auch über eine andere Art der Speicherverwaltung nachdenken...



  • Ich habe jetzt den Stack im Projekt erweitert und bekomm auch 2 Arrays dort unter. Leistungseinbusen habe ich keine bemerkt. Kann es zu Problemen kommen, bei einem zu großen Stack?

    Wie kann ich im Projekt sagen, dass die Array-Daten auf den Heap gelegt werden und was ist in diesem Fall der Vorteil zu einem Stack?



  • Hallo,

    Ein Array auf dem Heap

    int* array = new int[640*480];
    //  Damit arbeiten und dann irgendwann
    delete[] array;
    // oder mit der STL
    std::vector<int> array(640*480); // kein löschen notwendig
    


  • Okay, vielen Dank.

    So jetzt ist erstmal Wochenende. Nächste Woche kommen die nächsten Fragen.

    Schonmal vielen Dank für die kompetente Hilfe!



  • Hallo

    Ich habe jetzt den Stack im Projekt erweitert und bekomm auch 2 Arrays dort unter. Leistungseinbusen habe ich keine bemerkt. Kann es zu Problemen kommen, bei einem zu großen Stack?

    Du in deinem Fall wahrscheinlich keine, aber der Stack ist nicht für Massendaten da, sondern für rein kleine, lokale. Den Stack vergrößern zu müssen deutet meistens auf ein Designproblem hin.

    Wie kann ich im Projekt sagen, dass die Array-Daten auf den Heap gelegt werden und was ist in diesem Fall der Vorteil zu einem Stack?

    Wie das geht hat ja bereits Braunstein gepostet.
    Der Vorteil ist, das der Heap um ein Vielfaches größer ist als der Stack, und auch nicht verfällt wenn der aktuelle Scope verlassen wird. Der Heap ist also immer der richtige Ort, um Massendaten für das gesamte Programm zu speichern.

    bis bald
    akari


Anmelden zum Antworten