我有一个结构体A,它里面还内含一个结构体B。A中存放着一个B类型的数组。
现在,我先调用了CreateFileMap,传递的文件句柄参数是那个无效文件句柄INVALID_HANDLE_VALUE,调用这个函数返回的确实是一个有效的文件映射句柄。然后用MapViewOfFile,也成功了。
但是,我通过把MapViewOfFile返回的void*指针转换为A*,发现了一个问题。A对象中存放的B类型数组并不全部是有意义的,比如这个数组大小为17,但我发现数组下标从15开始就已经没有意义了。最奇怪的是,虽然下标从15开始出现问题,但在下标为15的这个地方取到的B类型对象中,还是有部分成员变量有意义。A,B两个结构体都很大,我求过它们的sizeof,发现A的已经达到4K多byte了,B的大小为272字节。两个结构体都是由客户定义的,且已经做了对齐的考虑。请问各位大侠,出现上述问题的原因是什么呢?该如何解决呢?
现在,我先调用了CreateFileMap,传递的文件句柄参数是那个无效文件句柄INVALID_HANDLE_VALUE,调用这个函数返回的确实是一个有效的文件映射句柄。然后用MapViewOfFile,也成功了。
但是,我通过把MapViewOfFile返回的void*指针转换为A*,发现了一个问题。A对象中存放的B类型数组并不全部是有意义的,比如这个数组大小为17,但我发现数组下标从15开始就已经没有意义了。最奇怪的是,虽然下标从15开始出现问题,但在下标为15的这个地方取到的B类型对象中,还是有部分成员变量有意义。A,B两个结构体都很大,我求过它们的sizeof,发现A的已经达到4K多byte了,B的大小为272字节。两个结构体都是由客户定义的,且已经做了对齐的考虑。请问各位大侠,出现上述问题的原因是什么呢?该如何解决呢?
解决方案 »
- DoModal()不是CTipDlg的成员?求解!!!
- WEB Browser控件边框如何去掉?
- edit 垂直居中 去掉边框
- 如何在CPropertyPage中以响应OnCtrlColor的方法修改GroupBox的背景颜色?
- 这段代码编译后未什么说我 'm_ProcessID' : unreferenced local variable 未引用局部变量呢? 怎么才能实现引用呢?谢谢!
- 求Visual C++MFC编程实例的光盘源码
- 在线等,急啊,free(&oldmen[-1]);是什么意思啊?
- ActiveMovie控件为什么不能插入呢?哭问
- 如何通过编程实现更改 网络连接-〉tcp/ip属性的功能?
- 转换问题
- 求助:在视图类中用OnDraw显示图像时,每次更新时,为何有部分图像并没有更新?
- 父对话框关闭子对话框控件依然显示怎么办
读取应该是没有问题的。因为,我有很多类似的数据结构需要进行这两个操作。我把调用CreateFileMap和MapViewOfFile的过程单独放在一个函数中了。其他的数据结构在使用这个函数时没有任何问题,只有上面提到的A数据结构有问题。
1.指针问题
2.map大小问题