Visual C 结构抛出内存转储

visual C++ Struct throws Memory Dump

本文关键字:内存 转储 结构 Visual      更新时间:2023-10-16

我是旧VC DLL的"骄傲"继承人,并试图理解它的问题。我的前身使用了一些联合/结构构造进行数据处理。现在,我将其调试到他将数据放在结构中的某个点,但是整个应用程序崩溃,打印内存转储并且无需尝试。

一个小的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;
...

是否有一种方法可以测试哪种结构构造函数,或者我在这里做错了什么?

最好的问候

lord_pinhead

遇到了很多麻烦和有用的链接,为什么不与字符串一起使用struct,我昨天将其重构为班级,就像charme一样:

 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;
};

因此,如果有人在他的代码中找到了这一点,只需将其扔掉并使用适当的类或会员变量即可。