Zum Forum springen
Benachrichtigungen
Alles löschen

[Geschlossen] C++

12 Beiträge
8 Benutzer
0 Reactions
527 Ansichten
makro1983
Beigetreten: 17.05.2008
Elite Grinder

Schreiben Sie ein C++-Programm, das so lange läuft, bis der Stack komplett voll ist. Der anschließende Programmabsturz („Stack Overflow“) soll in Kauf genommen werden. Erstellen Sie das Programm sowohl in Visual Studio

Kann mir da einer kurz aushelfen bitte?!


11 Antworten
makro1983 Themenstarter
makro1983
Beigetreten: 17.05.2008
Elite Grinder

wirklich dringend... 11.12. 14h muss ich das haben :/


grml1234
Beigetreten: 14.11.2007
Elite Grinder

Ohne Gewähr: eine unendliche Rekursion sollte es tun?

Edit: Jo, hier steht noch was dazu: http://en.wikipedia.org/wiki/Stack_overflow#Infinite_recursion


makro1983 Themenstarter
makro1983
Beigetreten: 17.05.2008
Elite Grinder

Original von grml1234
Ohne Gewähr: eine unendliche Rekursion sollte es tun?

Edit: Jo, hier steht noch was dazu: http://en.wikipedia.org/wiki/Stack_overflow#Infinite_recursion

kay... idee hatte auch grad ebe... gebe mich mal ran!
weiter informationen & oder programme gerne posten!

echt wichtig für so eine scheiss unterschrift! danke


makro1983 Themenstarter
makro1983
Beigetreten: 17.05.2008
Elite Grinder

#include <iostream>
#include <stdlib.h>
#include <stack>
using namespace std;

int stapelueberlauf(int zaehler)
{
zaehler++;
cout<<zaehler;
stapelueberlauf(zaehler);
return 0;
}

int main()
{

stapelueberlauf(0);
system("PAUSE");
return 0;
}

Das Programm läuft. Dabei läuft der Zaehler solange hoch, bis sich das Programm irgendwann selbst beendet. Ka ob das jetzt ein Overflow ist. Kann mich irgendwie daran erinnern das ein Overflow ne Fehlermeldung bringt und nicht das sich dadurch das Programm einfach beendet…

?!?! Ja nein!??!? anders?!?!?!


grml1234
Beigetreten: 14.11.2007
Elite Grinder

Tut mir leid, da bin ich überfragt. Prinzipiell sollte es so gehen, gibt es vielleicht in VS eine Option, einen Stack Overflow abzufangen?


die ich glaube einzige möglichkeit wie man sicher sein kann immer einen stack overflow zu produzieren ist folgendes:
while(true)
{
__asm {
push 0
}
}
da ist auch völlig egal wie der compiler eingestellt ist :P

bei der lösung mittels rekursion könnte es auch in einer arbeitsspeicher voll meldung enden wenn man den stack groß genug einstellt glaube ich

und bei der anderen variante indem man einfach ein großes array definiert könnte es sein das das array x[1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000] in 100 jahren evtl in den stack/arbeitsspeicher passt und dann keinen stackoverflow mehr erzeugt :P


ich bin c++ noob, aber springt der zähler bei deinem rekursions code nicht einfach auf den negativen wert des definitionsbereichs des integers, wenn er die obere grenze erreicht, so dass du "nur" einfach ne endlosschleife hast?


FiftyBlume
Beigetreten: 06.06.2010
PokerStrategist

Geil wäre ja zu wissen welcher Stack, std. ist wohl ne unendliche Rekursion....

schreib halt

ganz banal wäre das sowas

methode(int j)
{
while(j<0)
methode();
}

Edit:
bmut könnte recht haben, allerdings gilt das nicht, wenn es der "Stackpointer" vom Prozessor ist.....der kann nur ne begrenzte Zahl von unteraufrufen udn dann schießt sich das Programm kaputt.


Original von makro1983
Schreiben Sie ein C++-Programm, das so lange läuft, bis der Stack komplett voll ist. Der anschließende Programmabsturz („Stack Overflow“) soll in Kauf genommen werden. Erstellen Sie das Programm sowohl in Visual Studio

Kann mir da einer kurz aushelfen bitte?!

Mit dem Programm oder mit dem Ende des letzten Satzes :coolface:


sTaTermi
Beigetreten: 13.11.2009
PokerStrategist

hab mal nen progg geschrieben, das rekursiv nen ordner + alle unterordner durchsucht hat. da gabs dann irgendwann nen stack overflow ;)


crt32
Beigetreten: 17.02.2007
Elite Grinder
 int main() { return main(); } 

Teilen: