如何使用内置函数验证指针而不是NULL检查?

ach*_*ora 3 c linux memory vxworks lynxos

在今天的讨论中,我发现VxWorksLynxOS中有检查,它告诉您为指针分配的地址来自有效范围.这是我第一次听到这个代码,就像我指定的那样int *i=&variable;.

我应该收到一个警告或错误,说明在我的应用程序中我无法将地址值分配给整数.

就像我做NULL检查一样,我只检查地址0x00000000.但地址可能就是这种情况0x00000001.如果它是未映射的区域并且可能无法访问,则这也是无效的情况.是否有人知道某些与Linux相似的东西,或者可以指导它在VxWorksLynxOS中的完成情况.

有任何想法吗??

小智 6

您在VxWorks中搜索的函数称为vxMemProbe.

基本上,vxMemProbe库插入特殊的异常处理代码来捕获页面错误或总线错误.vxMemProbe函数用于检查地址是否对读取或写入有效.它还允许您测试是否可以使用给定的数据宽度(8,16,32,64位)和对齐方式访问特定地址.

vxMemProbe的基础机制与特定体系结构异常处理机制相关联.vxMemProbe库将代码插入到异常处理程序中.当您探测触发异常的地址时,处理程序会检查vxMemProbe是否触发了异常.如果是,则处理程序在异常之前恢复状态处理器并将执行返回到调用vxMemProbe的位置,同时还通过给定调用约定的体系结构返回值.