Visual C 结构抛出内存转储
visual C++ Struct throws Memory Dump
我是旧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;
};
因此,如果有人在他的代码中找到了这一点,只需将其扔掉并使用适当的类或会员变量即可。
相关文章:
- GDB:在转储的整个内存中查找值
- 内存集分段故障内核转储
- crtdbg 在使用 sf::Text::setOutlineThickness 时转储内存泄漏
- 如何使用 windbg "dt"命令从命名空间污染的内存转储中获取信息
- Visual C 结构抛出内存转储
- 内存核心转储C
- 分段错误(核心转储),内存集位于C++的字符指针中
- 转储内存以查找C++应用程序中的内存泄漏
- 内存转储未在C++释放模式下写入
- 从内存转储中查找线程消息队列中的消息
- 将进程内存转储到文件/从转储文件重新创建进程
- 运行时出现内存转储错误
- 分段错误(核心转储)C++,因为我使用了大量内存
- 从转储中确定内存中存在的对象的类型
- 使用Windbg从转储文件中分析可能的内存泄漏
- 为什么linux将干净的MAP_ANONYMOUS内存页转储到核心转储?
- 将2D数组错误定位为参数会导致内存转储
- 带有动态内存核心转储错误的自定义Deck类
- 将进程内存转储到磁盘以分析内存泄漏
- 当查看内存转储的调用堆栈时,如何在VS中指定源代码目录