如果 pMapMen 的长度为 7 个元素,我如何一次传递多个元素。下面的代码传递一个元素。
//Create memory mapped file - pMapMem
pMapMem[1] = (int*)MapViewOfFile(
hMap, // Handle to map object
FILE_MAP_ALL_ACCESS, // Read/Write permisssion
0,
0,
BYTES_TO_MAP);
最佳答案
假设您的文件仅包含 NUM_ELEM
元素数组,并且它们的类型为 myelement_t
结构,您可以执行以下操作:
#define BYTES_TO_MAP (NUM_ELEM * sizeof(myelement_t))
myelement_t *elem;
void *mmapped = MapViewOfFile(
hMap, // Handle to map object
FILE_MAP_ALL_ACCESS, // Read/Write permisssion
0,
0,
BYTES_TO_MAP);
if(NULL != mmapped) {
elem = (myelement_t *) mmapped;
for(i= 0; i < NUM_ELEM; i++) {
printelem(elem[i]);
}
}
如果您的代码仅传递 1 个元素,则可能是因为您仅映射了 1 个元素,即 BYTES_TO_MAP
等于 1 个元素的长度
关于c - 如何在 Windows C/C++ 中将数组传递到共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039891/