QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2193|回复: 0

关于volatile关键字的疑惑?

[复制链接]
发表于 2007-5-11 11:13:53 | 显示全部楼层 |阅读模式
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);
不会出现警告。
这两种方式是否有区别。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 10:09 , Processed in 0.059923 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表