MST

星途 面试题库

面试题:C++ 中如何在指针使用后置空操作避免野指针

请详细描述在 C++ 中,当使用完指针后,通过什么样的指针使用后置空操作来避免野指针问题,并举例说明。
22.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在C++中,当使用完指针后,通过将指针赋值为nullptr来进行后置空操作,从而避免野指针问题。

例如:

#include <iostream>

int main() {
    int* ptr = new int(10);
    // 使用ptr
    std::cout << "Value of ptr: " << *ptr << std::endl;
    // 使用完后释放内存
    delete ptr;
    // 后置空操作
    ptr = nullptr; 
    // 此时如果再次访问ptr,程序不会因为野指针而崩溃,因为ptr指向nullptr
    if (ptr != nullptr) {
        std::cout << "ptr is still valid: " << *ptr << std::endl;
    } else {
        std::cout << "ptr is nullptr, can't dereference." << std::endl;
    }
    return 0;
}

在上述代码中,delete释放了ptr指向的内存后,将ptr赋值为nullptr,这样在后续如果不小心尝试使用ptr,通过检查ptr != nullptr就可以避免访问野指针导致的未定义行为。