最近在處理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是邪魔歪道(誤
沒有留言:
張貼留言