在我的函数中,内存指针及其大小作为参数传递:
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(使用前将#替换为@)