代码如下所示
struct tNode
{
int data;
tNode* next;
tNode(const int& data, tNode* next = nullptr)
{
this->data = data;
this->next = next;
}
};
int main()
{
tNode* ptr = new tNode(1);
std::uint64_t num_ptr = reinterpret_cast<std::uint64_t>(ptr);
delete ptr;
auto back_to_ptr = reinterpret_cast<tNode*>(num_ptr);
tNode* ret = back_to_ptr->next;
std::cout << ret;
}
当我尝试使用 MSVC 编译器在 Visual Studio 2022 中进行调试时,我无法检测到任何错误。 我相信
tNode* ret = back_to_ptr->next;
应该输出有关内存访问冲突的错误信息,那么为什么上面的代码可以正常工作?
我一直在寻找将指针转换为 int 类型的问题。 使用Visual Studio 2022,我通过打断点的方式调试了上面的例子。