C++中如何判断传入的缓冲区是否有效?

2024-05-03

在我的函数中,内存指针及其大小作为参数传递:

int myFun(uintptr_t* mem_ptr, int mem_size) {
    // Code here
}

有没有办法判断这块内存是否真的有效?

(操作系统是 CentOS Linux 版本 7.9.2009。)


不。只是不要。

即使您可以找到一种方法来检查指针是否可以安全地取消引用,但这并不意味着它指向您认为的位置!它可能指向您的调用堆栈、只读代码段、您正在使用的某些库的静态变量,或者您的程序碰巧可以访问的内存中的任何其他位置。

传递有效指针的责任应该由caller的函数。为了让调用者更难做一些愚蠢的事情,可以考虑传递一个std::vector & or std::vector const &反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中如何判断传入的缓冲区是否有效? 的相关文章

随机推荐