sizeof是如何实现的,和内核里面宏如出一辙
来源:互联网 发布:after effects mac版 编辑:程序博客网 时间:2024/04/29 14:17
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++中的指针运算。
百度看了下是这样实现的,
一切的根源就是指针步长,我喜欢这样叫,我觉得这样更容易让人理解,但是大多数书没有提出这样一个概念。当然这还没完?其实依靠这个原理的不仅仅是sizeof 在linux内核中有非常有名的俩个宏,其原理也是如此。
阅读全文
0 0
- sizeof是如何实现的,和内核里面宏如出一辙
- 内核里面writel是如何实现的
- 内核里面writel是如何实现的
- linux内核里面writel是如何实现的
- linux内核里面writel是如何实现的?
- 内核里面writel(readl)是如何实现的
- 内核里面writel(readl)是如何实现的
- 内核里面writel(readl)是如何实现的
- HTML元素title里面和js里面几句话如何换行 格式代码是如何的?
- cat proc/version在内核中是如何实现的?
- cat proc/version在内核中是如何实现的?
- cat proc/version在内核中是如何实现的?
- cat proc/version在内核中是如何实现的?
- linux内核是如何实现分页机制的
- 如出一辙的云存储下的数据交互方式和程序访问入口
- Hi3520D UART2和UART3是如何加载到内核的
- Hi3520D UART2和UART3是如何加载到内核的
- Python里面如何实现tuple和list的转换?
- 使用json unmarshal数据到interface{}, 数字变成float64,,golang
- 『R语言初学』Day3
- myeclipse+maven搭建web项目方法一(超级详细)
- DOM事件处理程序
- 使用Python批量修改文件名
- sizeof是如何实现的,和内核里面宏如出一辙
- ShaderLab- Pass Tags
- keras函数式模型接口
- 2017 Multi-University Training Contest
- Spring boot源码分析-环境搭建
- 你真的愿意主动加班吗
- UTF8编码表
- Django报错,IOError: [Errno 13]Permission denied
- 从0开始写一个基于注解的轻量级分布式RPC框架(3)让Spring加载自定义注解