可能重复:
C++ 在堆栈上分配的变量上调用 delete
int i = 10;
int* iP = &i;
delete iP;
执行此代码时究竟会发生什么?我根本没有收到任何运行时错误或编译器警告,指针在对其调用 delete 之前和之后仍然保持相同的地址,但是在 delete 尝试取消引用甚至将其强制转换为有时int
会使程序崩溃但其他时候它只是工作,哪种闻起来像未定义的行为。
可能重复:
C++ 在堆栈上分配的变量上调用 delete
int i = 10;
int* iP = &i;
delete iP;
执行此代码时究竟会发生什么?我根本没有收到任何运行时错误或编译器警告,指针在对其调用 delete 之前和之后仍然保持相同的地址,但是在 delete 尝试取消引用甚至将其强制转换为有时int
会使程序崩溃但其他时候它只是工作,哪种闻起来像未定义的行为。