关于__int64的问题。
我在一个结构内,定义多个成员,其中一个是 __int64。
例如如下:
{
long A;
long B;
char C[24];
__int64 D;
long E;
}
但是这个时候我在把这个结构地址作为参数给其他DLL时,
出现了问题。也就是他的长度不是64位了,从内存抓取数据来看。
A的值没问题;
B的值没问题;
C的值没问题;
在这里有一个32位的值
D的值在这里。
E的值在这里。
如果我把结构改成这样
{
long A;
long B;
char C[24];
long D1;
long D2;
long E;
}
就完全正常了。
咨询做DLL的人,他们说可能是结构内存对齐引起的。
以前确实没有遇到过该问题,该如何调整??我用bcb6.
谢谢各位!
[解决办法]
#pragma pack(8)
用这个试试,如果是结构内存对齐引起的,用这个可以改变对齐方式的.
如果不行就用char D[4];代替那个值,dll里面再转一下
[解决办法]
内存对齐的问题。
这样就可以了:
#pragma pack(1)
struct AA
{
...
}
#pragma pack()