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

标签 c++ arrays pointers memory

我有这段代码:

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/

相关文章:

c++ - C++ 中的复常量 i?

c++ - 表示日期的字符串并对其进行转换

c# - 与不同类中的另一个函数互操作

c++ - 在 C++ 中限制登录尝试

c - 检查字符数组是否为空的最佳方法

c - x86-如何使用内联汇编中的for循环将值插入数组

java - 在循环中声明多个java数组

c++ - 将 C++ 实例方法分配给全局函数指针?

c++ - 在头类中创建内联函数到私有(private)变量

c - 成员(member)运营商 : How to use "my_var" actual value in "my_struct->my_var"?