gpt4 book ai didi

c++ - 如何将 LPVOID 验证为

转载 作者:太空狗 更新时间:2023-10-29 19:37:47 25 4
gpt4 key购买 nike

我正在使用非托管的 C++,当我调用返回 LPVOID 的方法时,我遇到了这个问题。

LPVOID MyMethod(...);

问题是此方法有时会返回 Bad Ptr,如果返回的值是 Bad Ptr,我想知道是否有检测方法。

我试过询问它是否为 NULL,但没有成功。

我意识到结果是否为 Bad Ptr 的唯一方法是在调试时,我尝试了一些不同的方法但仍然无法做到。

最佳答案

不,没有简单的方法可以确定指针是否损坏。

Windows 确实有 IsBadReadPtr、IsBadWritePtr。这些函数存在固有缺陷——它们仅确定函数在调用时在您的地址空间中是否可读或可写。它们也可能是 security 的原因issues永远不要使用。

主要问题是无法区分进程仍可访问的“坏”指针和好指针。

例如,

int g[5];
int somethingElse;

void* GetPointer()
{
return &g[5]; // Whoops, off by one.
}

&g[5] 可能是您进程中的有效指针,并且可能指向其他东西,您将能够访问它而不会崩溃,但写入它会破坏您的状态。

关于c++ - 如何将 LPVOID 验证为 <Bad Ptr>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com