博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
包含零长度数组的结构体申请内存
阅读量:4216 次
发布时间:2019-05-26

本文共 541 字,大约阅读时间需要 1 分钟。

下面的结构体中包含了一个零长度的数组struct ib_pkey_cache {	int             table_len;	u16             table[0];};那如果要定义一个这个结构体的指针的话,申请的空间改怎么计算呢?可以参看下面的codestruct ib_pkey_cache      *pkey_cache = NULL;pkey_cache = kmalloc(struct_size(pkey_cache, table, tprops->pkey_tbl_len),			     GFP_KERNEL);	if (!pkey_cache)		goto err;这段code 用tprops->pkey_tbl_len 来表示要给原本零长度数组分配的空间,然后用struct_size来计算整个结构体的长度。其中struct_size 是一个宏,实现如下:#define struct_size(p, member, n)					\	__ab_c_size(n,							\		    sizeof(*(p)->member) + __must_be_array((p)->member),\		    sizeof(*(p)))

 

转载地址:http://zpnmi.baihongyu.com/

你可能感兴趣的文章
内存管理API之ksize
查看>>
内存管理API之alloc_pages
查看>>
linux performance tool
查看>>
test-definitions/blob/master/auto-test/bazel/bazel.sh
查看>>
test-definitions/blob/master/auto-test/bigdata/bigdata.sh
查看>>
/test-definitions/blob/master/auto-test/blktrace/blktrace.sh
查看>>
test-definitions/blob/master/auto-test/blogbench/blogbench.sh
查看>>
test-definitions/blob/master/auto-test/boost/boost.sh
查看>>
Java多态性理解
查看>>
Intellij Idea 工具在java文件中怎么避免 import .*包,以及import包顺序的问题
查看>>
IDEA Properties中文unicode转码问题
查看>>
Oracle中Blob转换成Clob
查看>>
Linux如何查看so中函数名
查看>>
自动管理代码的android.mk
查看>>
cocos2dx 2.2.6编译记录(1)
查看>>
makefile学习网站
查看>>
C 编写lua模块(1)
查看>>
Lua教程:Lua调用C/C++函数(4)
查看>>
win下创建win32控制台工程,执行lua脚本
查看>>
cocos2dx android启动错误
查看>>