c++结构访问冲突

C++ struct access violation

本文关键字:访问冲突 结构 c++      更新时间:2023-10-16

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

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;

代码编译得很好,但是我在该结构上得到访问冲突,所以我认为该结构没有正确初始化。任何想法吗?

cdm_physical_cass未初始化/分配。你必须调用

LPWFSCDMPHCU cdm_physical_cass = new WFSCDMPHCU;

最好使用智能指针(如std::unique_ptr)。

LPWFSCDMPHCU cdm_physical_cass;不是一个结构体,它是指向WFSCDMPHCU类型结构体的指针。必须为cdm_physical_cass所指向的结构体分配内存。建议使用WFMAllocateBuffer函数

由于LPWFSCDMPHCU是指针而不是结构体,因此您需要为该指针(LPWFSCDMPHCU)分配内存(malloc或new,具体取决于语言),然后您可以使用字段