在我解决一些编程练习时,我意识到我对指针有一个大误解。请问有人能解释一下为什么这段代码会导致C++崩溃吗?
#include <iostream>
int main()
{
int* someInts = new int[5];
someInts[0] = 1;
someInts[1] = 1;
std::cout << *someInts;
someInts++; //This line causes program to crash
delete[] someInts;
return 0;
}
顺便提一下,我知道这里没有必要使用“new”,我只是尽可能地让这个例子变小。
(*someInts)++;
。 - geometriandelete[]
期望的是从相应的数组new
获取的指针。递增从数组new
中获得的指针,然后将结果指针传递给delete[]
是无效的并且会导致UB。正如他们正确指出的那样,someInts++;
是问题所在。 - Justin Time - Reinstate Monica