2010年12月1日 星期三

[Linux] sizeof 小心用

最近在處理driver 效率問題,要很在乎每個宣告實際的大小,還有type的大小

sizeof 就常常用,還好arm 板子上跟pc 的沒差太多...
但!!!   還是得小心用阿  囧>

以下是用sizeof 在系統上求出
--
首先
int 是 4 bytes (32bits)
char 是 1

--
常常用sizeof 不只求位元大小還可以用來求長度
筆記幾個要小心的地方:

char *str = "0123456789"

sizeof(str) ==>4
sizeof(*str) ==> 1
<<不要對指標亂來取來這招 囧!!!>>

char str[] = "0123456789"
sizeof(str) ==>11個(\0)
sizeof(*str) ==> 1
但是
char str[100] = "0123456789"
sizeof(str) ==>100
<<亂來沒好處阿!!! 那可不是字串大小!!!>>

int value[100];
value[0] = 10;
sizeof(value) ==>400 (4*100)
因為char 是1 int 是4

---
所以sizeof 是用來算記憶體大小,在complier時期就會知道的數字,要找長度
還是乖乖用strlen()唷~~~


那個... 執行期間的sizeof是邪魔歪道(誤