gpt4 book ai didi

c++ - 访问未分配的内存 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:26:17 28 4
gpt4 key购买 nike

我有这段代码:

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/

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