我想知道在可移植的C或C ++中是否有可能使用内存映射文件。据我所知,没有任何标准认识到内存映射文件的存在,因此我认为不可能。
使用内存映射可以使相同的字节出现在两个地址上。此外,我认为甚至不能在没有先构造对象的情况下使用一段内存(除非通过“char *”)。因此,如果我们想将一个现有的映射文件作为整数数组处理,则会产生未定义的行为。
那么,标准对于内存映射文件的情况如何呢?
使用内存映射可以使相同的字节出现在两个地址上。此外,我认为甚至不能在没有先构造对象的情况下使用一段内存(除非通过“char *”)。因此,如果我们想将一个现有的映射文件作为整数数组处理,则会产生未定义的行为。
那么,标准对于内存映射文件的情况如何呢?
malloc()
分配的内存用作任何类型的数组(前提是分配足够大),请参阅C11草案标准n1570,6.5表达式6有效类型。使用mmap()
分配的内存同样适用。 - EOF