posted 17 years ago
"t" is an instance member of Test, meaning that every instance of Test has its own variable "t". So when you create an instance of Test, it has a variable "t", which is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test.While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test. While creating that new instance of Test, its variable "t" is initialized to hold a new instance of Test... and boom, you have a deep execution stack, because none of these calls to "new Test()" have returned yet. Each one invokes another one, until the stack overflows with call records.