我有这段代码:
try
{
int* myTestArray = new int[2];
myTestArray[4] = 54;
cout << "Should throw ex " << myTestArray[4] + 1 << endl;
}
catch (exception& exception)
{
cout << "Exception content: " << exception.what() << endl;
}
对我来说真正好奇的是,为什么这里没有抛出异常,因为它访问了一个未分配的索引......为什么 55 是 print ? C++ 是否自动增加了数组的大小?
最佳答案
访问未分配的内存不保证会抛出异常。
它实际上不能保证做任何事情,因为那是未定义的行为。什么事情都可能发生。小心鼻恶魔。
它打印 55 因为你刚刚存储了 54,取回它然后打印 54+1。根本不能保证打印出 55,尽管这在实践中经常会发生。这次成功了。
关于c++ - 访问未分配的内存 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881092/