我在头文件中定义了以下结构:
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上遇到访问冲突,所以我认为结构没有正确初始化。 有什么想法吗?
答案 0 :(得分:4)
cdm_physical_cass
未初始化/已分配。
你必须致电
LPWFSCDMPHCU cdm_physical_cass = new WFSCDMPHCU;
最好使用智能指针(如std::unique_ptr
)。
答案 1 :(得分:1)
LPWFSCDMPHCU cdm_physical_cass;
不是结构,它是指向WFSCDMPHCU
类型结构的指针。您必须为cdm_physical_cass
指向的结构分配内存。建议使用函数WFMAllocateBuffer
。
答案 2 :(得分:0)
由于LPWFSCDMPHCU是指针而不是结构,因此您需要为该指针(LPWFSCDMPHCU)分配内存(malloc或new取决于语言),然后您可以使用这些字段。