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

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

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

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

有任何想法吗??

最佳答案
您在VxWorks中搜索的函数称为vxMemProbe.

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

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

转载注明原文:如何使用内置函数验证指针而不是NULL检查? - 代码日志