问题 堆栈和堆内存-对象,方法和可执行代码

DwithQs

新成员
已加入
2013年8月19日
留言内容
1
编程经验
1-3
调用方法时,它们会进入堆栈,还是指向该方法的条目进入堆栈?

例子

代码:

静态void Main()
{
TestMethod();
}

无效TestMethod()
{
//做点什么
}

堆:

测试方法() --------->//做一些可执行代码
主要的()

-或者-

//做一些代码
测试方法()
主要的()




属于对象的方法与对象一起放在堆中,还是在堆栈上?

例子


代码


静态类程序
{
static void Main()
{
测试类 Testobj =新的TestClass();
}
}

类TestClass
{
测试类()
{
TestClassesMethod();
}
测试类esMethod()
{
// do something
}
}


堆叠和堆:

堆栈///////////////堆
Testobj ---------> TestClass
Main()///////////// TestClassesMethod()


-或者-

堆栈///////////////堆
TestClassesMethod()
Testobj ------------> TestClass
主要的()


特别是在C#Winforms应用程序中,由于Main()进入堆栈(与大多数其他编程语言一样),因此Form1()也会从堆栈上启动(应用。跑(新的Form1());) -或-它是一个新对象并在堆上生成吗?

堆叠//////////////////////堆
Form1参考--------> Form1
主要的()

-或者-

堆叠///////////////////////堆
InitializeComponent()
Form1()
主要的()




最后,是否有任何可执行代码实际存储在堆栈和堆上,还是仅引用可执行代码存储位置的数据和占位符?




谢谢


PS-我必须在堆栈和堆示例中放上////的空格,它不断重新格式化我的帖子。
 
最佳 底部