无法使用指针写入MMF

时间:2014-01-23 11:12:58

标签: c++ pointers memory-management shared-memory memory-mapped-files

我想将char* buf[]写入共享内存。

我有几个指向几个地图的指针 - char* m_pP[MAX],地图已打开

m_oMMF[channel] = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, wstring);
m_pP[channel] = (char*) MapViewOfFile(m_oMMF[channel], FILE_MAP_ALL_ACCESS, 0, 0, size);

地图的大小足够大,我得到了int offset我希望使用这个m_P[]指针在共享内存中写入但是我对此语法感到挣扎。

我对C ++没有那么有经验。 谁能帮我这个?

由于

1 个答案:

答案 0 :(得分:1)

不确定如果我理解清楚。

但是我假设你有指向映射内存的字符指针,并且你试图在某个偏移量之后写入数据。

char * ptr_to_memory = m_pP[channel];

//buf is array of character pointer, so you need to know the "index" as well as "size" of the data you need to write.

char * data_to_write = buf[index];

memcpy( ptr_to_memory + offset, data_to_write, size );

请记住进行一些健全性检查,无论(ptr + offset)是否在映射区域内。