gpt4 book ai didi

C++ new () 究竟做了什么?

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:37 27 4
gpt4 key购买 nike

在这段代码中:

int * p = new int(44);

p分配在堆上,指向的值为44;但现在我也可以做这样的事情:

p[1] = 33;

没有得到错误。我一直以为

int * p = new int(44);

只是说“P 在堆上分配并指向包含 44 的地址”的另一种说法,但显然它使 p 成为指向 int 数组的指针?这个新数组的大小是 44 吗?或者这个结果不寻常。

最佳答案

你是对的:P 在堆上分配并指向包含 44 的地址。没有分配数组。 p[1] = 33; 就是他们所说的“未定义行为”。您的程序可能崩溃,但不能保证每次执行此操作都会崩溃。

关于C++ new <datatype>(<value>) 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925379/

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