2011-09-12 8 views
2

Je n'ai aucun problème pour implémenter le fichier mappé en mémoire. La question est. En supposant que cela renvoie une vue de la mémoire valide.Mise en œuvre du fichier mappé en mémoire C++

void* pBuf = MapViewOfFile(hMapFile, 
     FILE_MAP_WRITE, 
     0,     
     0,  
     0); 

Est-ce que j'ai des alternatives à l'utilisation de memcpy pour lui donner des données? par exemple puis-je dire à mon application de stocker des données dans celui-ci? Je veux vraiment quelque chose comme char * buffer = new char [1073741824] où le nouveau place les données dans le fichier mappé en mémoire. cela semble logique. ou devrais-je écrire un wrapper qui écrit dans la mémoire en utilisant memcpy? ce serait décevant.

+0

S'il vous plaît ne pas écrire la réponse dans la question - Je suis revenu à votre édition. Si vous voulez répondre à la question, faites-le comme une réponse. Bien sûr, cela ne sert à rien puisque vous avez une réponse identique à votre solution. –

Répondre

0

Vous pouvez utiliser l'opérateur placement new ou vous pouvez convertir l'adresse en une structure ou une classe que vous souhaitez utiliser. L'avantage du placement nouveau est que le constructeur de la classe sera appelé. Si vous utilisez ensuite ce pointeur, vous n'avez pas besoin de copier les données mais de les lire et écrire directement.

+0

meilleure réponse. même conclusion que moi. plus c'est le plus efficace et le moins gonflé. – user936509