我有一个内存接口,它将获取地址空间与附加后备存储区分开。(在Linux操作系统下,接口管理的地址空间池是mmap'ed MAP_ANONYMOUS和MAP_NORESERVE, madvise'ed MADV_DONTNEED和mprotect'ed PROT_NONE。然后通过madvise MADV_WILLNEED和mprotect PROT_READ, PROT_WRITE和PROT_EXEC附加备份。
这个接口允许我分配大量的地址空间,同时惰性地获取实际的物理内存。我想用它来创建一个"惰性向量",它会在适当的点请求后备存储,但不会在向量增长时复制当前的内容。
给定标准库的分配器的语义,这样的方案可能吗?
标准库分配器接口中没有提供调整现有内存块大小的规定。只有"分配一个大小为N的块"one_answers"释放一个块"的语义。
所以,你的问题的答案是"不,你不能用std::vector
这样做"