Ich habe gerade mit einer Bibliothek gearbeitet, die potenziell schwere Objekte erstellt. Insbesondere erstelle ich Objekte, die mit Wave-Dateien verknüpft sind.So erkennen Sie, ob ein Objekt hauptsächlich aus Stack- oder dynamischem Speicher besteht
Wenn nun eine Instanz eines Wave-Objekts (nur als Beispiel) erstellt wird, gibt es eine gute Möglichkeit, zu bestimmen, wo es im Speicher zugewiesen wird?
Zum Beispiel, wenn ich einen std :: Vektor in den Stapel instanziieren soll, weiß ich, dass etwas Speicher auf dem Stapel zugeordnet ist (d. H. Headerinformationen) und die tatsächlichen Containerdaten auf dem Heap erstellt werden. So muss ich mir zum größten Teil keine Gedanken über einen Stapelspeicherüberlauf machen. Obwohl ich immer noch die Möglichkeit habe, das Objekt in Heap vollständig zu instanziieren.
Aber sagen wir, ich weiß nicht über eine Objekte Implementierung. Nehmen wir an, ich verwende eine Bibliothek, die ein riesiges Array im Stack erstellt. Dies könnte möglicherweise Probleme verursachen.
Also meine Frage: Woher wissen wir, wie "schwer" ein Objekt ist Speicher-weise?
Die kurze Antwort ist: Sie können nicht. Zumindest nicht, wenn Sie ein Factory Parttern verwenden, das Ihre Objekte immer auf dem Heap instanziiert. In diesem Fall ist die Antwort natürlich immer "der Haufen". –