woaixihongshi_12 2017-02-14 05:37 采纳率: 0%
浏览 847

C,C++指针 赋值的一个疑问

const HDDINFO_BASE* p = ((HDDINFO_BASE*)(pFather->m_HddBaseInfo.strSerialNumber));
memcpy(&(pPj->m_PjInfo.HddInfo), &(pFather->m_HddBaseInfo), sizeof(HDDINFO_BASE));

问题:赋值后,p指针指向的内存地址和&(pFather->m_HddBaseInfo)地址及(pFather->m_HddBaseInfo.strSerialNumber)的地址不一样(偏移了7个字节或15个字节)!导致memcpy失败!会是怎么的情形导致赋值操作都会发生这样的错误呢?

附上结构体:
#pragma  pack(1) 

typedef struct HDDINFO_BASE
{
char strSerialNumber[22];
char strModelNumber[42];
char strFirmVersion[10];
char strSATAType[10];
char strCacheSize[20];
char strRPM[5];
WORD majorVersion;
bool islocked;
INT64 sectors;
HDDINFO_BASE()
{
memset(strSerialNumber, 0, sizeof(strSerialNumber));
memset(strModelNumber, 0, sizeof(strModelNumber));
memset(strFirmVersion, 0, sizeof(strFirmVersion));
memset(strSATAType, 0, sizeof(strSATAType));
memset(strCacheSize, 0, sizeof(strCacheSize));
memset(strRPM, 0, sizeof(strRPM));
majorVersion = 0;
islocked = false;
sectors = 0;

}
}HDDINFO_BASE;

  • 写回答

1条回答 默认 最新

  • 伪造的时空 2017-02-14 09:28
    关注

    赋值代码没有啊,是不是赋值时出了错?

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog