Wann ist etwas auf dem Heap/Stack?
-
Zisko schrieb:
Skym0sh0 schrieb:
das ist java und kein c++
Ist es denn falsch? Macht man es anders besser? Und wenn ja, wie?
Hast du mal versucht, das zu übersetzen?
-
Stimmt, ich habe das Sternchen vergessen. Ich habe das kleine Beispiel nicht übersetzt

Wenn ich die richtige Zeile richtig verstehe, dann soll ich garkein new verwenden?
-
Zisko schrieb:
Wenn ich die richtige Zeile richtig verstehe, dann soll ich garkein new verwenden?
Ja! Genau! (ich meine nein! NEIN!) Du hast es erfasst!
-
Was haltet ihr dann von der Empfehlung, dass ich Objekte mit new erzeuge, da sonst der Stack irgendwann voll ist?
-
Sone schrieb:
Besser:
MyClass m;das ist nicht besser, das ist lediglich ein anderer anwendungsfall,
wenn z.b. zur kompilierzeit die objekte oder deren anzahl nicht feststeht.
-
Zisko schrieb:
Was haltet ihr dann von der Empfehlung, dass ich Objekte mit new erzeuge, da sonst der Stack irgendwann voll ist?
Musst du nie! Dafür gibt es STL-Container (die automatisch alle Objekte im Heap allokieren) und
std::(basic_)string.
-
um stack größen würde ich mir keine sorgen machen, solange man nicht statische arrays der größe xxxtausend macht, sollte das passen. für alles adnere gibt es die STL-Container
Kellerautomat schrieb:
Skym0sh0 schrieb:
wie man rauskriegt wo was liegt
Da gibts nix rauzukriegen. Die Regeln sind simpel und intuitiv.
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?
-
Skym0sh0 schrieb:
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?Und was soll das bringen?

-
wie gesagt, ichv erweise auf das entsprechende kapitel in more effective c++...
-
Ich bin Regelungstechniker, der nun auch die Aufgaben der Programmierung für Signalprozessoren mitübernehmen soll, da in unserem kleinem Entwicklungsteam der Programmierer die Stelle gewechselt hat.
Muss ich mir bei eingebetteten Systemen auch keine Gedanken um den Stack machen?
-
Skym0sh0 schrieb:
um stack größen würde ich mir keine sorgen machen, solange man nicht statische arrays der größe xxxtausend macht, sollte das passen. für alles adnere gibt es die STL-Container
Kellerautomat schrieb:
Skym0sh0 schrieb:
wie man rauskriegt wo was liegt
Da gibts nix rauzukriegen. Die Regeln sind simpel und intuitiv.
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?http://www.codeproject.com/Articles/35206/Pointer-pointing-to-Stack-or-Heap :p
-
Zisko schrieb:
Muss ich mir bei eingebetteten Systemen auch keine Gedanken um den Stack machen?
Das ist die falsche Frage.
Es geht nicht um Stack vs Heap. Die wirkliche Frage ist die Lebenzeit eines Objektes.
Soll es weiter existieren wenn der Scope verlassen wird oder nicht. Und wenn ja, per Kopie oder das Original.Du kannst 100GB an Daten in einen std::string schreiben der auf dem Stack liegt ohne dass der Stack explodiert (genug VRAM vorausgesetzt ;)).
-
http://stackoverflow.com/questions/1350819/c-free-store-vs-heap
Mit den Begriffen ist das auch etwas verwirrend.Zu new/delete:
Google nach:
RAII
-
Zeus schrieb:
Skym0sh0 schrieb:
um stack größen würde ich mir keine sorgen machen, solange man nicht statische arrays der größe xxxtausend macht, sollte das passen. für alles adnere gibt es die STL-Container
Kellerautomat schrieb:
Skym0sh0 schrieb:
wie man rauskriegt wo was liegt
Da gibts nix rauzukriegen. Die Regeln sind simpel und intuitiv.
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?http://www.codeproject.com/Articles/35206/Pointer-pointing-to-Stack-or-Heap :p
ach weil das ja so plattformunabhängig ist
-
Skym0sh0 schrieb:
Zeus schrieb:
Skym0sh0 schrieb:
um stack größen würde ich mir keine sorgen machen, solange man nicht statische arrays der größe xxxtausend macht, sollte das passen. für alles adnere gibt es die STL-Container
Kellerautomat schrieb:
Skym0sh0 schrieb:
wie man rauskriegt wo was liegt
Da gibts nix rauzukriegen. Die Regeln sind simpel und intuitiv.
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?http://www.codeproject.com/Articles/35206/Pointer-pointing-to-Stack-or-Heap :p
ach weil das ja so plattformunabhängig ist

Das die Funktion gar inline assembler verwendet macht Sie letzten Endes nutzlos.
-
Sone schrieb:
Das die Funktion gar inline assembler verwendet macht Sie letzten Endes nutzlos.
Warum?
-
Sone schrieb:
...
OMG bitte halte endliche die Fresse. Das ist ja nicht mehr erträglich mit Dir...
-
Sone schrieb:
Skym0sh0 schrieb:
Zeus schrieb:
Skym0sh0 schrieb:
um stack größen würde ich mir keine sorgen machen, solange man nicht statische arrays der größe xxxtausend macht, sollte das passen. für alles adnere gibt es die STL-Container
Kellerautomat schrieb:
Skym0sh0 schrieb:
wie man rauskriegt wo was liegt
Da gibts nix rauzukriegen. Die Regeln sind simpel und intuitiv.
achja?
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?http://www.codeproject.com/Articles/35206/Pointer-pointing-to-Stack-or-Heap :p
ach weil das ja so plattformunabhängig ist

Das die Funktion gar inline assembler verwendet macht Sie letzten Endes nutzlos.Warum? Schauen ob ein Pointer auf dem Stack/Free-Store liegt ist eine low-level Sache und ASM kann da schon angebracht sein.
-
Skym0sh0 schrieb:
pass auf, ich gebe deiner funktion ein objekt und deine funktion sagt mir ob heap oder stack. ok?
Ganz einfach. Dort, wo der Caller es angelegt hat. Was war daran jetzt so schwer?
-
Ich weiß nicht, wer hier die ungenannte Frage beantwortet hat, ein gegebenes Objekt darauf zu überprüfen, ob es im Heap oder Stack liegt, ich möchte nur noch einmal betonen, dass das fern der Frage des TEs liegt und ich daher alle, die sich über genannte Frage ausgelassen haben, des Zeitüberflusses oder bestenfalls Rieseninteresses bzgl. des Themas bezichtigen muss.
PS: Solch eine Antwort zu verfassen steckt mich aber im Bezug auf meine Bezichtigung in die selbe Ecke.