我是旧VC ++ DLL的“骄傲”继承人,并尝试了解它的问题。我的前任使用了一些联合/结构构造来进行数据处理。现在,我调试它,直到他将数据放入结构中,但是整个应用程序崩溃了,打印了内存转储,并且没有try-catch起作用。
一个小的CodeExample。
MyCode.h:
union
{
struct
{ double _dm;
};
struct
{ double _dm;
bool _links;
};
struct
{ double _dm;
double _dummy;
double _angle;
};
struct
{ double _dm;
double _angle;
double _dummy1;
string _name;
string _descr;
double _param_d1, _param_d2, _param_d5;
double _dummy2;
string _dummy3;
int _epuzae;
int _param_i2;
string _sob, _snr2, _param_s3, _param_s4;
void *_data;
};
struct
{ void *_data;
};
}
MyCode.cpp
... Rest of the method...
_dm = 100; // Will be set
_angle = 0; // Will be set
_dummy1 = 0; // Will be set
_name = "Unittest"; // Here it crashes the whole app
_descr = "This is a test";
_param_d1 = 1;
_param_d2 = 2;
_param_d5 = 5;
_dummy2 = 0;
_dummy3 = "";
_epuzae = 99;
_param_i2 = 101;
...
有没有一种方法可以测试称为struct的构造函数,或者我在这里做错了什么?
最诚挚的问候
大头针
答案 0 :(得分:0)
在经历了很多麻烦和有用的链接之后,为什么不将struct与字符串一起使用,我昨天将其重构为一个类,就像一个咒语一样运行:
class DPic {
public:
DPic();
~DPic();
double DM;
double Angle;
std::string Name;
std::string Descr;
double Param_d1, Param_d2, Param_d5;
int Epuzae;
int Param_i2;
std::string Sob, Snr2, Param_s3, Param_s4;
void *_data;
};
因此,如果有人在他的代码中找到了它,那就扔掉它并使用适当的类或成员变量。