以下代码段的输出是什么?这是什么意思?

arsis-dev

我正在为C ++ / OOP考试而学习,对我的练习测试中的这个问题有些困惑。

以下代码段的输出是什么?

int *list = new int[5];
int *ptr;
for (int i = 0; i < 5; i ++)
list [ i] = i+ 1;
ptr = list;
delete [ ] list;
cout << *ptr
  1. 1个
  2. 清单地址
  3. ptr的地址
  4. 错误– ptr引用了不再属于该程序的内存

我找到了输出,即-17891602,但是我以为这只是对不再属于该程序的内存的引用而正确吗?因为我不一定会出错。

自从我使用指针以来已经有一段时间了,所以我开始尝试遵循代码的实际工作而变得一团糟。(与你们正在研究的某些东西相比,我知道这很简单,但是我才刚刚开始学习这些东西:))

紫罗兰色

输出可以是任何东西(包括-17891602)因为你提领的是有它的后盾内存释放的指针调用未定义的行为。

标准的相关部分是C++11 3.7.4.2 Deallocation functions /4(我的粗体):

如果在标准库中提供给释放函数的参数是不是空指针值的指针,则释放函数应释放该指针引用的存储,从而使所有指向已释放存储的任何部分的指针均无效。使用无效的指针值(包括将其传递给释放函数)的效果是不确定的。

在我的系统上,以下程序(在您的代码段中建模):

#include <iostream>

int main (void) {
    int *list = new int[5];
    int *ptr;
    for (int i = 0; i < 5; i ++)
        list [ i] = i+ 1;
    ptr = list;
    delete [ ] list;
    std::cout << *ptr;
    return 0;
}

输出,1但绝不是必需的。

您问题的正确答案很可能是4,尽管从技术上讲这不是输出(您可能看不到发送到输出流的“错误”字符串),但是这是执行代码结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以下代码段的输出是什么?这是什么意思?

来自分类Dev

以下代码段的输出是什么意思?

来自分类Dev

以下代码段是什么意思

来自分类Dev

以下代码段的输出是什么,为什么?

来自分类Dev

以下代码分析是什么意思?

来自分类Dev

以下代码中的“-97”是什么意思?

来自分类Dev

以下代码分析是什么意思?

来自分类Dev

GWT中的以下代码行是什么意思

来自分类Dev

以下代码行是什么意思?

来自分类Dev

以下dmesg输出是什么意思?

来自分类Dev

以下几行代码是什么意思

来自分类Dev

以下代码中的“ 0xDEAD”是什么意思?

来自分类Dev

这是什么意思?

来自分类常见问题

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

这是什么意思?

来自分类Dev

以下代码的输出是什么,为什么?

来自分类Dev

“ Graphics2D g2d =(Graphics2D)g;”是什么?意思是什么?在以下代码段中,此行的含义是什么?

来自分类Dev

tomee服务器输出-这是什么意思?

来自分类Dev

tomee服务器输出-这是什么意思?