c – 如何验证LPVOID

c – 如何验证LPVOID,第1张

概述我正在使用C unmanaged,当我调用一个返回LPVOID的方法时,我遇到的问题. LPVOID MyMethod(...); 问题是这个方法有时返回Bad Ptr,我想知道是否有一种方法可以检测到这个,如果返回的值是Bad Ptr. 我试过询问它是否为NULL而没有运气. 我知道如果结果是坏Ptr的唯一方法是在我调试时,我尝试了一些不同的方法,但仍然无法做到. 不,没有简单的方法来确定指针是 我正在使用C unmanaged,当我调用一个返回LPVOID的方法时,我遇到的问题. @H_404_7@

@H_404_7@

LPVOID MyMethod(...);
@H_404_7@问题是这个方法有时返回Bad Ptr,我想知道是否有一种方法可以检测到这个,如果返回的值是Bad Ptr.

@H_404_7@我试过询问它是否为NulL而没有运气.

@H_404_7@我知道如果结果是坏Ptr的唯一方法是在我调试时,我尝试了一些不同的方法,但仍然无法做到.

解决方法 不,没有简单的方法来确定指针是否坏. @H_404_7@

@H_404_7@windows确实有IsBadReadPtr,IsBaDWritePtr.这些函数本质上存在缺陷 – 它们仅在调用时确定函数在地址空间中是否可读或可写.它们也可能是security issues的原因,绝对不能使用.

@H_404_7@主要问题是没有办法区分仍然可以访问进程的“坏”指针和一个好的指针.

@H_404_7@例如,

@H_404_7@

int g[5];int somethingElse;voID* GetPointer(){   return &g[5]; // Whoops,off by one.}
@H_404_7@& g [5]可能是你进程中的一个有效指针,并且可能指向somethingElse,你将能够访问它而不会崩溃但是写入它会破坏你的状态.

总结

以上是内存溢出为你收集整理的c – 如何验证LPVOID全部内容,希望文章能够帮你解决c – 如何验证LPVOID所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存