gpt4 book ai didi

C++ 指针 - visual studio 抛出异常

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:55 24 4
gpt4 key购买 nike

void setToNull(int *tempPtr)
{

int val = 25;
tempPtr = &val;
std::cout << "hh" << std::endl;
std::cout << *tempPtr << std::endl;
delete tempPtr;
tempPtr = nullptr;
}

int main()
{
int five = 5;
int *ptr = &five;
std::cout << *ptr;
setToNull(ptr);
if (ptr)
std::cout << *ptr;
else
std::cout << " ptr is null" << std::endl;
delete ptr;
ptr=nullptr;
return 0;
}

当我在 visual studio 中运行这个程序时,抛出了一个异常,并且直到结束才运行。有人能向我解释为什么会这样吗?此代码是否正确?

最佳答案

您正在尝试 delete多次指向局部变量地址的指针,因为您要删除的指针将指向 five在主要或valsetToNull .这些变量位于堆栈中,当它们超出范围时将被自动删除。如果你delete手动设置它们,你会得到未定义的行为,除其他外,这可能会导致崩溃。

关于C++ 指针 - visual studio 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33389884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com