Ich habe mich nur gefragt, ob es überhaupt möglich ist, Memory-Mapped-Dateien in Portable C oder C++ zu verwenden. Ich denke nicht, weil, soweit ich weiß, kein Standard die Existenz von Speicherkarten erkennt.Erkennt ein C- oder C++ - Standard die Existenz von Speicherabbilddateien?
Mit Speicherzuordnungen ist es möglich, das gleiche Byte an zwei Adressen zu haben. Außerdem denke ich, dass es nicht möglich ist, ein Stück Speicher zu verwenden, ohne zuerst ein Objekt dort zu konstruieren (außer durch char*
). Wenn wir also eine existierende abgebildete Datei als ein Array von ganzen Zahlen behandeln wollen, die ein undefiniertes Verhalten sein sollten.
Also, was ist die Situation in Bezug auf Memory-Mapped-Dateien und den Standard?
Nein, es gibt keine Vorstellung über _memory mapped files_ in Standards AFAIK. –
Die Suche nach dem C++ 14-Standard für * memory mapped * ergibt 0 Ergebnisse. – NathanOliver
Sie können den von 'malloc()' zugewiesenen Speicher als ein Array von beliebigem Typ verwenden (vorausgesetzt, die Zuweisung ist groß genug), siehe C11-Entwurfsnorm n1570, * 6.5 Ausdrücke 6 effektiver Typ *. Es gibt keinen Grund, warum Sie nicht in der Lage sein sollten, dasselbe mit dem von 'mmap()' zugewiesenen Speicher zu tun. – EOF