-
他52不速來客了552我5他55歲 5查看全部
-
聯(lián)合體。。。
查看全部 -
結(jié)構(gòu)體。。。
查看全部 -
筆記本查看全部
-
1查看全部
-
對(duì)于宏的理解
查看全部 -
6-1到6-2的練習(xí)實(shí)例
查看全部 -
unset 很巧妙。只是把type 置為了0。而不是真正的抹掉了內(nèi)存。下次用的時(shí)候根據(jù)type做判斷,直接覆蓋。這樣大大的節(jié)約了性能。
查看全部 -
gdb調(diào)試查看,值的存儲(chǔ)位置
查看全部 -
gdb 調(diào)試 packet array 變成了hash array
查看全部 -
Packed Array 和Hash Array。
如果能用到Packed Array 就盡量使用Packed Array。節(jié)省內(nèi)存。
查看全部 -
多出1MB的內(nèi)存用到哪里了?
查看全部 -
hashtable的巧妙設(shè)計(jì)
查看全部 -
nTableMask:用來計(jì)算最終落到哪個(gè)桶里邊的一個(gè)值。
arData?數(shù)組中的每個(gè)元素都是一個(gè)bucket。Bucket結(jié)構(gòu)體元素如下。
? ? ?zval 是key-value的value
? ? ?zend_ulong h 是hash算法算出來的hash值
? ? *key 是key-value的key
nNumUsed代表了有多少bucket 被使用了。
nNumofElements是跟nNumofElements是有區(qū)別的,比如unset 掉一個(gè)數(shù)組中的一個(gè)元素,nNumUsed并不會(huì)減少。nNumofElements會(huì)減少,nNumOfElements是真正有意義的值,不包括unset掉的值。
nTableSize 是bucket大小。
nInternalPointer內(nèi)部指針。
nNextFreeElement :有時(shí)候并不寫key就賦值一個(gè)value。通過這個(gè)nNextFreeElement知道了應(yīng)該放到哪個(gè)位置。
pDestructor :用來析構(gòu)用的。
查看全部 -
字符串的寫時(shí)復(fù)制
查看全部 -
這種字符串的實(shí)現(xiàn)是二進(jìn)制安全的。
什么是非二進(jìn)制安全?字符串以\0結(jié)尾,如果字符串中有\(zhòng)0那么就會(huì)被截?cái)唷?/p>
什么是二進(jìn)制安全呢?可以字符串len獲取字符串的內(nèi)容,即便字符串中有\(zhòng)0也不會(huì)因此而截?cái)唷?/p>
查看全部 -
查看全部
-
變量,簡單的圖示
查看全部 -
gdb 查看底層變量的存儲(chǔ)方式
查看全部 -
zend_uchar type 這個(gè)用一個(gè)字節(jié)表示變量的類型。
查看全部 -
zend_value每一項(xiàng)的字段解釋。
查看全部 -
zval 的結(jié)構(gòu)體占用大小
查看全部 -
判斷大小端的demo
查看全部 -
謝謝老師???查看全部
-
結(jié)構(gòu)體內(nèi)存 8字節(jié)對(duì)齊,聯(lián)合體復(fù)用內(nèi)存
查看全部 -
char a 1
int b 4
long 8
viod* 8
int e 4
char* f 8
查看全部 -
union_u{...}
//這里是聯(lián)合體 聯(lián)合體的大小為8字節(jié) 內(nèi)容和結(jié)構(gòu)體一樣?
但是不同之處它的變量是復(fù)用的 反復(fù)在這8字節(jié)存儲(chǔ)?
查看全部 -
stuct_s{? //這里是結(jié)構(gòu)體 結(jié)構(gòu)體的總大小是40字節(jié)?
在內(nèi)存里是按字節(jié)對(duì)齊存放的 且小于4字節(jié) 的以4個(gè)字節(jié)的位置放置 單行大小為8字節(jié)對(duì)齊? 整體結(jié)構(gòu)體以8個(gè)字節(jié)對(duì)齊
char a; //1字節(jié)
int b;//4字節(jié)
long c;//8字節(jié)
void* d;//8字節(jié)
int e;//4字節(jié)
char*f;//8字節(jié)
}
查看全部
舉報(bào)