在我的函式中,記憶體指標及其大小作為引數傳遞:
int myFun(uintptr_t* mem_ptr, int mem_size) {
// Code here
}
有沒有辦法判斷這塊記憶體是否真的有效?
(作業系統是 CentOS Linux 版本 7.9.2009。)
uj5u.com熱心網友回復:
不。只是不要。
即使您可以找到一種方法來檢查是否可以安全地取消參考指標,但這并不意味著它指向您認為的位置!它可能指向您的呼叫堆疊、只讀代碼段、您正在使用的某個庫的靜態變數,或者您的程式碰巧可以訪問的記憶體中的任何其他位置。
傳遞有效指標的責任應該是函式的呼叫者。為了讓呼叫者更難做一些愚蠢的事情,考慮傳遞一個std::vector &orstd::vector const &代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472988.html
