wieviel variablen eines structs sind möglich?
-
Ok, seh ich ein


-
CSpille schrieb:
Die Größe des Stacks ist afaik unter Windows auf 1MB begrenzt.
Dieser wird on demand vergeben. Welchen Grund es dafür gibt, kann ich dir leider nicht sagen.Das Schützt wunderbar vor Endlosrekursionen.
-
aufpassen nich jedes Objekt das ohne "new" angelegt wird ist aufm stack..
class XY{ double A,B; XY(double a, double b) : A(a),B(b){} }; class Block{ XY z; Block() : z(0.0,0.0){ } }; Block *p= new block();
-
BorisDieKlinge schrieb:
aufpassen nich jedes Objekt das ohne "new" angelegt wird ist aufm stack..
EDIT: Upps falsch gelesen...
Allerdings werden diese klasseninternen Objekte wie auf dem Stack behandelt, da ihre Destruktoren automatisch aufgerufen werden und der Speicher ebenfalls automatisch freigegeben wird.Gruß
Don06
-
weil viel sich daran klammern
Objekt A; //Auf jedenfall stack Objekt *A= new Objekt; //Heap
-
BorisDieKlinge schrieb:
weil viel sich daran klammern
Objekt A; //Auf jedenfall stack Objekt *A= new Objekt; //HeapJo, aber wenns in class Objekt sowas gibt:
void Objekt::funkt() { some_type_t arr[100000]; } //und dann Objekt *A= new Objekt; //Heap A->funkt(); //wo landet wohl arr? Jau, aufm Stack.Das Problem sind immer alle Autovariablen. Die landen immer auf dem Stack.
Neben dem Heap gilt dies übrigens auch NICHT für globale Variablen.
-
_iop schrieb:
Mein Struct hat 15 Integer und 2 Bool Variablen. Davon wollte ich so um die 80000 Stück erstellen.
Wenn ich das ganze so erstelle..
struct meinstruct { //15xint; //2xbool; }; meinStruct meineDaten[80000];..bricht der Compiler das Programm ab.
Erstelle ich das Ganze mit "new" läuft alles prima... deswegen wundere ich mich...
Bist du sicher das du alle 15 Variablen tatsächlich brauchst?
Vielleicht bietet sich für dein Vorhaben ja auch eine union an

enum Type { A, B, C, D, E, F, G, H }; struct beispiel { union { int a, b, c, d, e, f, g, h; } Type type; }; // ... beispiel blub; blub.type = A; blub.a = 100;Code ungetestet...
-
Tachyon schrieb:
Ist das so? Und ich dachte immer, man kann die Stackgröße als Linker-Option mitgeben.
Mit /STACK z.B.ja, man kann bei manchen compilern die stackgröße beeinflussen. "konstant" und "begrenzt" ist sie dann aber immer noch. also: ja, das ist so.
-
die erklärung schrieb:
compilern
linker war gemeint.
-
asdsd schrieb:
union
{
int a, b, c, d, e, f, g, h;
}wer macht denn so etwas?