面试题答案
一键面试在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
就可以避免访问野指针导致的未定义行为。