|
struct {
int i,
int j,
......
}A;
volatile A *ptr;
ptr = (A *) kmalloc(sizeof(A), GFP_KERNEL);
编译器不会对ptr指针进行任何优化,它会不会对结构体成员进行优化,即ptr->i和
ptr->j;
这时执行
kfree(ptr);
提示警告:
“passing argument 1 of 'kfree' discards qualifiers from pointer target type”
什么意思?
如果定义
struct {
volatile int i,
volatile int j,
......
}A;
A *ptr;
ptr = (A *) kmalloc(sizeof(A), GFP_KERNEL);
它不会对结构体成员进行优化,即ptr->i和ptr->j
这时执行
kfree(ptr);
不会出现警告。
这两种方式是否有区别。
|
|