gpt4 book ai didi

c - 有没有办法测试无效的内存位置?

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:03 26 4
gpt4 key购买 nike

在像 C 这样的语言中,例如,如果一个例程接收到一个指针,是否有任何系统调用或其他测试可以应用于该指针以检查它是否是一个有效的内存位置,而不是捕获 SIGSEGV 或等效的?

最佳答案

不,您无法确定地址是否无效。即使您使用某些操作系统功能来测试地址是否映射到地址空间,您仍然无法确定该地址是否属于您不应读取或修改的某些服务数据。

一个很好的例子。如果您的程序使用 Microsoft RPC 来接受来自另一个程序的调用,则您必须实现一组回调函数来为请求提供服务。这些回调函数将在由 RPC 启动的独立线程上运行。您不知道这些读取何时开始以及它们的堆栈大小是多少,因此如果您写入一个本应属于堆栈变量但不小心写入另一个堆栈的地址,则无法检测是否发生缓冲区溢出线程。

关于c - 有没有办法测试无效的内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263528/

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