全域性變數,區域性變數,靜態區域性變數
阿新 • • 發佈:2018-11-23
區域性變數 作用域在函式內部 變數的定址 通過esp定址或者ebp定址 全域性變數 整個程序 通過絕對地址定址 靜態區域性變數可以被多次賦值, 其值為最近一次賦值的值 但靜態區域性變數的初始化只能初始化一次, 如果對多次初始化,其實質也只會進行一次初始化, 因此其值也只是第一次初始化的值. 通過絕對地址定址 static int sum = i; 00F33A1E mov eax,dword ptr ds:[00F384ECh] //記錄區域性靜態變數是否被初始化 00F33A23 and eax,1 //結果只能為0或者1 00F33A26 jne showStatic+3Dh (0F33A3Dh) //未初始化 == 0 已初始化 == 1 00F33A28 mov eax,dword ptr ds:[00F384ECh] //更新初始化標誌 00F33A2D or eax,1 00F33A30 mov dword ptr ds:[00F384ECh],eax 00F33A35 mov eax,dword ptr [i] //賦值 00F33A38 mov dword ptr ds:[00F384E8h],eax