我继续获取空指针取消引用然后内核恐慌。 有人可以告诉我如何解决这个问题。
文件1.c:
int get_data()
{
int i;
int *mv;
unsigned long *f;
if ((get_data_from_other_file(&mv, &f)) {
return error;
}
for ( i=0; mv[i]; i++)
printf("%d %lu", mv[i], f[i]);
}
file2.c中:
struct data
{
.mv = { 1,2,3,4,5 },
.f = {4,5,5,3,2},
}datas;
int get_data_from_other_file(int **mv, unsigned long **f)
{
*mv = datas.mv;
*f = datas.f;
for ( int i =0; datas.mv[i]; i++)
printf ("%d %lu \n", *(mv[i]), *(f[i]));
return 0;
}
我只是希望能够在不使用malloc或new或类似内容的情况下从file1中的file2访问数据。
答案 0 :(得分:0)
此处printf ("%d %lu \n", *(mv[i]), *(f[i]));
您取消引用无效地址。
mv[i]
和f[i]
是您放在datas
结构中的数字(1,2,3,4,...)。通过对它们应用*
运算符,您尝试访问指定地址(1,2,3,4 ..)的内存。这显然是错误的,因为这些地址不是您的 - 它们保留用于系统使用并包含受保护的重要信息。
目前还不是很清楚你真正尝试做什么,但我没有在你的代码中看到对该文件的任何引用。
在内核中注册malloc
:您应该使用kmalloc
代替。