Ale*_*son 4 c++ standards operating-system memory-management
在C++中:
const size_t N = 1000;
int* p = new int[N];// time=t0
Run Code Online (Sandbox Code Playgroud)
我的程序只有一个线程,在分配内存后p,我的程序只会读取指向的内存p.
标准对价值的评价是p什么?
将p保持,直到它得到在时间价值= T0 delete的p?
或者,操作系统可以自行决定重新分配指向的内存p吗?
它取决于价值N吗?
p的值在创建后无法移动.该标准使得这样做毫无用处:
3.7.4.1分配功能
...如果请求成功,则返回的值应为非空指针值(4.10)p0,与先前返回的值p1不同,除非该值p1随后传递给运算符delete.
(引用标准的结尾)
因此,如果在运行时,由于合并某些内存片段等原因,某些事情决定将p移动到另一个地址,则该标准使得原始p指向的空间不可能被另一个内存分配使用.这个空间将被浪费掉.