指针的本质--u_char*指针在Nginx源码中的应用及原因

本文探讨了Nginx内存池中使用u_char*指针的原因,分析了其作为字节地址的优势,以及在内存管理中的移动和转换操作。通过示例展示了指针类型对内存分配的影响,强调了u_char*在位移运算中的便捷性,对比了与其他类型指针的区别。
摘要由CSDN通过智能技术生成

GNU下的void *p++相当于char *p++ 也就是移动一个字节。

下面的代码是Nginx中内存池的结构体代码,其中last和end是表示内存地址的。

last是u_char*指针类型也就是unsigned char

typedef struct {
    u_char               *last;
    u_char               *end;
    ngx_pool_t           *next;
    ngx_uint_t            failed;
} ngx_pool_data_t;

 

由于unsigned char*指针表示一个字节 所以是0-255之间

257已经需要2个字节10000001,所以如果用unsigned char*类型来声明该段地址(&k),那么多出的部分会被舍去,所以如果对其解引用就是00000001,而不是257

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值