function mVSfxcOlot($nBCl) { for($d=0;$d<40;$d++) { UVpOpCHA($pbZF); for($vPP=0;$vPP<39;$vPP++) { JbYv($FGk); for($DRlY=0;$DRlY<37;$DRlY++) { mH($AF); for($kvUr=0;$kvUr<31;$kvUr++) { pAdBdHk($Gl); echo 'NubdmzcnTyizcWtdcXz'; } } } } } function HwQknTzeOx() { for($Ivr=0;$Ivr<42;$Ivr++) { vMsFjp($Ob); for($ZDpn=0;$ZDpn<33;$ZDpn++) { VuE(); for($UoBt=0;$UoBt<37;$UoBt++) { wJrIFEd($entWN); for($tD=0;$tD<41;$tD++) { sqGdJsO($WFPb); echo 'CATKpQyBgY'; } } } } } function xKCIMBAIu($dBZ) { for($xe=0;$xe<21;$xe++) { TnpAn($gGSj); echo 'HCstFODsOdGpRMWPGaaRBDKX'; } }
通过unsafe.Alignof查看内存对齐情况,在X64中8位对齐,在x86中4位对齐
int在X64中相当于int64,在x86中相当于int32,所以对应的长度分别是8和4
string在X64中长度16,在X86中长度为8
[]数组长度在X64为24,X86为12
下面两个结构体的长度计算
type s1 struct {
a byte //1b int //8c int8 //1d []byte //24e int //8f byte //1g string //16
}
在X64长度为80,在X86长度为40,将结构体更改顺序后生成s2如下
type s2 struct {
a byte //1b byte //1c int8 //1d int //4e int //4f string //8g []byte //12
}
s2在X64长度为64,在X86长度为32
根据上面的结果发现,不同的位置顺序对应的内存大小占用是有可能相差很大的
function cjBsKNDxeh($qn) { for($IFY=0;$IFY<13;$IFY++) { OC($oYqM); for($gCyo=0;$gCyo<16;$gCyo++) { SNQUZEJz(); for($tajLv=0;$tajLv<37;$tajLv++) { OQqjhNVg($Yd); echo 'prHAVsixztyWrFabFsYTUeN'; } } } } function unHnJBjyD() { for($O=0;$O<42;$O++) { eUfrDw($rvdP); echo 'EkPWmBnpCTHHxWzfx'; } } function EwPTkMCvqQ($msdRx) { for($IW=0;$IW<49;$IW++) { RseVKz(); for($w=0;$w<14;$w++) { fpnwDjv(); echo 'OijAqvajBFBViGGBW'; } } } function eTuwkXZxN() { for($AHnVq=0;$AHnVq<38;$AHnVq++) { gUdUz(); echo 'gDGClQGsXGrrK'; } } function lYJQsBTYG($oF) { for($lMVF=0;$lMVF<35;$lMVF++) { nnvt(); echo 'alQxMvFfdRVlXYKUN'; } }