【发布时间】:2014-09-27 07:25:44
【问题描述】:
在 C++ 中:
const size_t N = 1000;
int* p = new int[N];// time=t0
我的程序只有一个线程,在分配内存给p后,我的程序只会读取p指向的内存。
标准对p 的价值有何评价?
p 是否会保留它在 time=t0 时获得的值,直到 delete 的 p 出现?
或者,操作系统可以自行决定重新分配p指向的内存吗?
是否取决于N的值?
【问题讨论】:
-
变量的值永远不会自行改变。
-
不同的东西。
p可以保持它的值,并且p指向的内存可以重新分配。 -
@juanchopanza 那么操作系统可以自行决定(没有我写的明确代码)重新分配内存吗?
-
@uvts_cvs 如果内存不足或调用未定义行为 (UB),它可以做到。但重点(不是双关语)是指针只是一个保存数字的变量。该数字不会自行改变(除非您调用 UB,在这种情况下,无论如何,所有赌注都是关闭的。)
-
有趣的问题,我回到这个问题是因为好奇是否有人会找到一个标准的报价来证明它。
标签: c++ memory-management operating-system standards