c#和c++之间共享内存,读取的数据异常
c++代码:
for (UINT32 i = 0; i < mesh.polygons.size(); i++)
{
uDataTrans.udata = mesh.polygons[i].vertices[0];
for (UINT32 j = 0; j < 4; j++)
{
MeshData[pos + j] = uDataTrans.cdata[j];
}
pos += 4;
uDataTrans.udata = mesh.polygons[i].vertices[1];
for (UINT32 j = 0; j < 4; j++)
{
MeshData[pos + j] = uDataTrans.cdata[j];
}
pos += 4;
uDataTrans.udata = mesh.polygons[i].vertices[2];
for (UINT32 j = 0; j < 4; j++)
{
MeshData[pos + j] = uDataTrans.cdata[j];
}
pos += 4;
}
HANDLE handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 4000000, "MeshMemory");
LPVOID addr = MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, 4000000);
strcpy((char*)addr, MeshData);
UnmapViewOfFile(addr);
Sleep(100);
C#代码:
byte[] chartest = new byte[4000000];
handle = OpenFileMapping(0x02, 0, "MeshMemory");
addr = MapViewOfFile(handle, 0x02, 0, 0, 4000000);
Marshal.Copy(addr, chartest, 0, 4000000);
UnmapViewOfFile(addr);
CloseHandle(handle);
运行的结果为:只有chartest[0]有值,其它都为0,但是如果MeshData都赋值为一个固定的值,数据就是正常的,求大佬们解答!