zwei Fragen
-
ist for( ; ; ) das gleiche wie while(1)?
class a { int* x; ... } class b { a a_; ... } ... b* b_ = new(b); delete(b);würde x automatisch mit gelöscht werden?
-
ad 1)
#include <iostream> int main( ) { for( ; ; ) std::cout << "fext"; }und
#include <iostream> int main( ) { while( true ) std::cout << "text"; }erzeugten bei mir beide
push offset string "text" push offset std::cout call std::operator<< add esp, 8 jmp mainund sind damit (zumindest in diesem Falle) ident.
ad 2)
x: ja
der Speicher, auf den x gegebenenfalls zeigt: neinGreetz, Swordfish
-
Zu 1: logisch gesehen erzeugen beide Varianten eine Endlosschleife (und eine for-Schleife lässt sich auch zur while-Schleife umbauen). Ob der Compiler die Identität erkennt und den selben Maschinencode erzeugt, ist die andere Frage.
-
desswegen sagte ich
Swordfish schrieb:
erzeugten bei mir beide [...]
und sind damit (zumindest in diesem Falle) ident.Greetz, Swordfish