【发布时间】:2016-08-18 10:30:47
【问题描述】:
我有一个结构 Register 和一个结构 ModbusReadStruct。 Register 声明如下:
typedef struct {
int TypeID;
char InstrumentType[32];
char RegTag[32];
char Protocol[32];
int RegNum;
char RW[32];
char RegisterType[32];
char Signed[32];
char Inverted[32];
char DataType[32];
int Counts;
} Register;
我想声明结构ModbusReadStruct如下:
typedef struct {
int Address;
int Port;
int BaudRate;
int DataBits;
int StopBits;
int RegID;
int Sampling;
char InstanceName[32];
int InstNum;
int MBNum;
int PortNum;
int RegNum;
Register Register[64];
} ModbusReadStruct;
但是,这种精确的实现会导致错误(Segmentation Fault)。实现类似于我上面想法的功能的最佳方法是什么?
【问题讨论】:
-
分段错误可能在使用它的代码中。我认为您创建的结构没有任何问题。
-
在结构中包含结构(或结构数组)没有问题。错误在其他地方。
-
结构看起来不错,崩溃可能是因为其他原因。请使用调试器来捕捉正在运行的崩溃,以便您可以在代码中找到它发生的位置。
-
请注意
ModbusReadSruct的大小为~15kB,它可能太大而无法在堆栈上分配。 -
@Mst137:贴出显示问题的代码