gpt4 book ai didi

c++ - C++ new 运算符能保证返回的指针不会改变它的值吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:21 30 4
gpt4 key购买 nike

在 C++ 中:

const size_t N = 1000;
int* p = new int[N];// time=t0

我的程序只有一个线程,在为 p 分配内存后,我的程序将只读取 p 指向的内存。

标准对 p 的值有何规定?

p 是否会保留它在 time=t0 时获得的值,直到 p删除

或者,操作系统能否自行决定重新分配 p 指向的内存?

是否取决于N的值?

最佳答案

p 的值在创建后不能移动。该标准使这样做毫无用处:

3.7.4.1 分配函数

...如果请求成功,则返回值应为非空指针值 (4.10) p0,不同于任何先前返回的值 p1,除非该值 p1 随后被传递给操作符 delete。

(引用标准结束)


因此,如果在运行时,某些东西决定将 p 移动到另一个地址,例如合并一些内存碎片,标准已经使原始 p 指向的空间不可能被另一个内存分配使用。空间将被浪费。

关于c++ - C++ new 运算符能保证返回的指针不会改变它的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125164/

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