C语言错误的指针,c语言中关于指针的错误(内核)
1.指针的赋值
在定义一个指针的时候,一定要注意赋值的问题。在定义一个指针的时候内存只为这个 指针分配了内存空间,没有为指针指到的位置分配空间。
例如:
struct class
{
char name[2];
int age;
};
/*错误的用法
struct class *a;
a = NULL;
a->age = 3;//这里一定要注意,没有为其分配空间所以不能直接赋值,在内核中,这样会直接崩溃掉。
*/
//正确的用法
struct class *a;
a = NULL;
a = kmalloc(sizeof(struct class),GFP_KERNEL);//这里分配了空间,并返回那个空间的开头的地址。
a->age = 3;
2.指针的加减
在内核中,经常一个结构体中有另外一个结构体的指针。这里分配就会有一个技巧,为第一个指针分配空间的时候,把包含的指针的空间一起分配了。
另外,当一个指针加上一个值的时候,是在这个指针指着的地址的基础上加上这个指针指着的数据结构的大小的字节*加上的值;
例如:
struct class
{
char name[2];
int age;
};
struct school
{
1.指针的赋值 在定义一个指针的时候,一定要注意赋值的问题。在定义一个指针的时候内存只为这个 指针分配了内存空间,没有为指针指到的位置分配空间。 例如: struct class { char name[2]; int age; }; /*错误的用法 struct class *a; a = NULL; a->age = 3;//这里一定要注意,没有为其分配空间所以不能直接赋值,在内核中,这样会直接崩溃掉。 */ //正确的用法 struct class *a; a = NULL; a = kmalloc(sizeof(struct class),GFP_KERNEL);//这里分配了空间,并返回那个空间的开头的地址。 a->age = 3; 2.指针的加减 在内核中,经常一个结构体中有另外一个结构体的指针。这里分配就会有一个技巧,为第一个指针分配空间的时候,把包含的指针的空间一起分配了。 另外,当一个指针加上一个值的时候,是在这个指针指着的地址的基础上加上这个指针指着的数据结构的大小的字节*加上的值; 例如: struct class { char name[2]; int age; }; struct school {下一篇:
python 运算中的|作用