【问题标题】:Accessing pointer not in memory访问不在内存中的指针
【发布时间】:2020-10-20 07:57:37
【问题描述】:

在线出错

ptr = (PTR)(event->LINK.NEXT);

错误:无法访问内存中的指针。取消引用一个空的 pinter 事件->LINK.NEXT

将数据与 null 进行比较意味着 kernel->LINK.NEXT 可能为 null。 我可以看到为什么它会给出这个错误。但是如何更改代码以便不显示取消引用错误。


   KERNEL(data);
   event_ptr->VALUE = 0;
   event_ptr->FLAGS = flags;
   _int_disable();
   if (kernel_data->LINK.NEXT == NULL) {
      _QUEUE_INIT(&kernel_data->LINK, 0);
   } /* Endif */



   while (ptr != (PTR)(kernel_data->NEXT)) {
         enable();
         Juble() 
        return(MQX_EINVAL);
      } 
      ptr = (PTR)(event->LINK.NEXT);
   } /* Endwhile */
#endif

【问题讨论】:

    标签: c pointers dereference rtos null-pointer


    【解决方案1】:

    在尝试使用之前检查event_chk_ptr 是否为非NULL。当您到达链表的末尾时,这将停止循环:

       while (event_chk_ptr && event_chk_ptr != (LWEVENT_STRUCT_PTR)((pointer)&kernel_data->LWEVENTS)) {
        ...
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2014-07-21
      • 1970-01-01
      • 2014-03-28
      相关资源
      最近更新 更多