sizeof是如何實現的,和核心裡面巨集如出一轍

2021-08-07 03:24:31 字數 627 閱讀 3886

0x00

很多東西用多了就缺乏了,洞察力,覺得就該如此。這也許就是中國那句老話:當局者迷。今天看到c群裡面的乙個學生問求乙個陣列的大小如何寫,當然不由自主的敲了sizeof

0x04

sizeof是乙個運算子不是函式,但是我突然覺得,他是如何實現的那?如果是乙個字串還可以判斷末尾的 '\0' 那對一塊記憶體如何去判斷他的結束那?

0x08

注意sizeof是運算子,而非函式

關於sizeof的兩個精巧的巨集實現。

非陣列的sizeof:

#defne _sizeof(t) ( (size_t)((t*)0 + 1))

陣列的sizeof:

#define array_sizeof(t)   ( (size_t)(&t+1)  - (size_t)(&t)  )

原理就是c/c++中的指標運算。

核心是如何管理程序的

程序管理負責控制程序對 cpu 的訪問,如任務的建立 排程和終止等。任務排程是程序管理最核心的工作,由 linux 核心排程器來完成。linux 核心排程器根據程序的優先順序選擇最值得執行的程序。乙個程序的可能狀態有如下幾種 1 執行態 已經獲得了資源,並且程序正在被 cpu 執行。程序既可執行在核...

分析uboot是如何啟動核心的

1.uboot啟動核心的 縮減如下 s getenv bootcmd debug main loop bootcmd s n s s if bootdelay 0 s abortboot bootdelay 2.假設bootcmd nand read.jffs2 0x30007fc0 kernel ...

分析uboot是如何啟動核心的

分析uboot是如何啟動核心的 cdzlllfe 1.uboot啟動核心的 縮減如下 s getenv bootcmd debug main loop bootcmd s n s s if bootdelay 0 s abortboot bootdelay 2.假設bootcmd nand read...