棧的變化規則:
1、方法調用會導致棧的生長,具體包括兩個步驟:一、插入方法返回地址(下圖中的Fn:);二、將實際參數按值(可以使用ref或out修飾)拷貝并插入到棧中(可以使用虛參數訪問)。
2、遇到局部變量定義會向棧中插入局部變量。
3、遇到return語句會導致棧消亡,一直消亡到方法返回地址,并把return的返回值設置到方法返回地址中。
4、這里先不考慮中括號導致的棧的消亡。
namespace StackAndHeapStudy
{
unsafe class Program
{
static void Main(string[] args)
{
var test = new TestClass();
SetX(test);
Console.WriteLine(*test.X);
Console.WriteLine(*test.X);
}
private static void SetX(TestClass test)
{
var X = 10;
test.X = &X;
}
}
unsafe class TestClass
{
public int* X;
}
}
新聞熱點
疑難解答