指针取消引用访问另一个文件中的数组

时间:2013-08-02 00:46:24

标签: android c pointers kernel

我继续获取空指针取消引用然后内核恐慌。 有人可以告诉我如何解决这个问题。

文件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访问数据。

1 个答案:

答案 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代替。