подскажите пожалуйста почему программа вылетает при записи в файл памяти.
#include <QMessageBox>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <QString>
class Mapping_file
{
public:
Mapping_file();
~Mapping_file();
// Идентификатор отображения файла на память
HANDLE hFileMapping;
// Указатель на отображенную область памяти
LPVOID lpFileMap;
LPCWSTR lpFileName_in;
LPCWSTR lpFileName_out;
// Идентификатор отображения файла на память
HANDLE hFileMapping_in;
HANDLE hFileMapping_out;
// Указатель на отображенную область памяти
LPVOID lpFileMap_in,lpFileMap_out;
void Open_mop_file();
void write_mapping();
protected:
private:
};
#include "Mapping_file.h"
Mapping_file::Mapping_file()
{
// Имя отображния файла на память
lpFileName_in = L"InFileName";
lpFileName_out = L"OutFileName";
}
Mapping_file::~Mapping_file()
{
// Отменяем отображение файла
UnmapViewOfFile(lpFileMap);
// Освобождаем идентификатор созданного
// объекта-отображения
CloseHandle(hFileMapping);
}
void Mapping_file::Open_mop_file()
{
lpFileName_in = L"InFileName";
// Открываем объект-отображение
hFileMapping = OpenFileMapping(
FILE_MAP_READ | FILE_MAP_WRITE, FALSE, lpFileName_in);
// Если открыть не удалось, выводим код ошибки
if(hFileMapping == NULL)
{
fprintf(stdout,"OpenFileMapping: Error %ld\n",
GetLastError());
getch();
return;
}
// Выполняем отображение файла на память.
// В переменную lpFileMap будет записан указатель на
// отображаемую область памяти
lpFileMap = MapViewOfFile(hFileMapping,
FILE_MAP_WRITE, 0, 0, 0);
// Если выполнить отображение не удалось,
// выводим код ошибки
if(lpFileMap == 0)
{
fprintf(stdout,"MapViewOfFile: Error %ld\n",
GetLastError());
getch();
return;
}
}
void Mapping_file::write_mapping()
{
QString str="hello_cvc";
int count=0;
DWORD dwLenght;
while(count<str.size())
{
dwLenght=str.at(count).toAscii();
*((LPDWORD)lpFileMap_in)=dwLenght; // ВЫЛЕТАЕТ ЗДЕСЬ
count++;
}
if(count==str.size())
{
count=0;
}
}
использование
Mapping_file *map;
map=new Mapping_file();
map->Open_mop_file();
map->write_mapping();