C 使用列表在内核设备中存储值
我正在编写一个小型内核设备,需要将值存储在列表中。将第一个条目添加到列表中可以正常工作,但下一个条目会触发错误。有人能告诉我为什么吗?我的代码如下;我在Fedora18中使用内核3.6.10-4.fc18.x86_64C 使用列表在内核设备中存储值,c,linux-kernel,kernel,kernel-module,C,Linux Kernel,Kernel,Kernel Module,我正在编写一个小型内核设备,需要将值存储在列表中。将第一个条目添加到列表中可以正常工作,但下一个条目会触发错误。有人能告诉我为什么吗?我的代码如下;我在Fedora18中使用内核3.6.10-4.fc18.x86_64 LIST_HEAD(dns_list_lp ) ; static void add_dns_list(__be32 v4address,struct in6_addr v6address) { struct dns_nat node; INIT_LIST_HEAD( &
LIST_HEAD(dns_list_lp ) ;
static void add_dns_list(__be32 v4address,struct in6_addr v6address)
{
struct dns_nat node;
INIT_LIST_HEAD( &node.dns_list);
node.dns_v4address=v4address;
node.dns_v6address=v6address;
list_add_tail ( &node.dns_list , &dns_list_lp );
}
每次调用
添加dns列表
时,您都在初始化列表。每次调用添加dns列表
时,您都在初始化列表。每次调用添加dns列表
时,您都在初始化列表。每次调用添加dns列表
时,您都在初始化列表。存储指向局部变量的指针。您必须记住,一旦函数返回变量节点的生存期结束,列表中的指针将不再有效。您将尝试存储指向局部变量的指针。您必须记住,一旦函数返回变量节点的生存期结束,列表中的指针将不再有效。您将尝试存储指向局部变量的指针。您必须记住,一旦函数返回变量节点的生存期结束,列表中的指针将不再有效。您将尝试存储指向局部变量的指针。您必须记住,一旦函数返回变量节点的生存期结束,列表中的指针就不再有效。hi,谢谢,我会更正它。我将不得不使用一个指针和使用kmalloc来分配内存,这样就可以了。这是最好的解决办法吗。每次在add_dns_list()@user2714949中调用kmalloc时是否会出现内存泄漏如果您记得在处理完数据后释放数据,则不会出现内存泄漏。您好,谢谢,我会更正它。我将不得不使用一个指针和使用kmalloc来分配内存,这样就可以了。这是最好的解决办法吗。每次在add_dns_list()@user2714949中调用kmalloc时是否会出现内存泄漏如果您记得在处理完数据后释放数据,则不会出现内存泄漏。您好,谢谢,我会更正它。我将不得不使用一个指针和使用kmalloc来分配内存,这样就可以了。这是最好的解决办法吗。每次在add_dns_list()@user2714949中调用kmalloc时是否会出现内存泄漏如果您记得在处理完数据后释放数据,则不会出现内存泄漏。您好,谢谢,我会更正它。我将不得不使用一个指针和使用kmalloc来分配内存,这样就可以了。这是最好的解决办法吗。每次在add_dns_list()@user2714949中调用kmalloc时是否会出现内存泄漏如果您记得在处理完数据后释放数据,则不会出现内存泄漏。