我在头文件中定义了以下结构:

typedef struct _wfs_cdm_physicalcu
{
    LPSTR           lpPhysicalPositionName;
    CHAR            cUnitID[5];
    ULONG           ulInitialCount;
    ULONG           ulCount;
    ULONG           ulRejectCount;
    ULONG           ulMaximum;
    USHORT          usPStatus;
    BOOL            bHardwareSensor;
} WFSCDMPHCU, * LPWFSCDMPHCU;


在我的代码文件中,我尝试像这样使用它:

LPWFSCDMPHCU cdm_physical_cass;
strcpy(cdm_physical_cass->cUnitID, "1234");
cdm_physical_cass->lpPhysicalPositionName = "DISP1";
cdm_physical_cass->bHardwareSensor = FALSE;
cdm_physical_cass->ulInitialCount = 100;


代码可以正常编译,但是我在该strcpy上遇到访问冲突,因此我认为该结构未正确初始化。
有什么想法吗?

最佳答案

cdm_physical_cass未初始化/分配。
你必须打电话

LPWFSCDMPHCU cdm_physical_cass = new WFSCDMPHCU;


更好的方法是使用智能指针(如std::unique_ptr)。

关于c++ - C++结构访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32808397/

10-09 13:35