to scutan
有点误导的嫌疑......
其实这段代码就是C语言的基础.
struct msg_queue *msg;//这里的确分配了一个变量,但只是一个指针变量,只有4个字节(所有的IA32指针都是4个字节),而且这个变量是在编译期就生成的,并不是在运行的时候才开始出现.至于为什么会出现一个struct msg_queue,这只是为了说明指针到底是只指向哪种类型的变量.你完全可以随便的转换其他类型而不会有任何数据的丢失.
msg=(struct msg_queue *) kmalloc(sizeof(*msq),GFP_KERNEL);//这里才是真正的分配内存,在运行期间,通过调用标准库函数,在内存开辟一个空间,然后使msg这个指针变量指向内存空间的开头. |