崩溃的位置是在main.cpp return a.exec();
通过代码回溯和按钮点击位置查看到一个头文件 中的 char str [100] 在lineedit->settext显示崩溃;但是经过反复看,char str[]里边的内容并没有数组越界。
先修改了一下 char str [100] ---改成---char str [200] ;发现不崩溃了;char str [100]的内容来自一个dll库内部获取的名字。
后经测试发现 编译 DLL时候,其中的头文件中的“char str数组” 的大小是[200], 但是qt demo测试APP里边的头文件(dll库的头文件)的char str数组的大小是[100];qt demo未及时更新头文件,只更新了dll;
一定要保证编译DLL的时候的头文件和测试dll时候demo的头文件是一样的
多人开发的时候一定要注意及时替换头文件;
头文件不一致:譬如私有成员变量不一致(其他都一样),恰巧你调用的接口用了这个成员变量,可是你却没有及时在demo中更换头文件,就会到时乱崩溃,位置毫无踪迹可寻。
还会引发一些不想干的结构体崩溃:
Run-Time Check Failure #2 – Stack around the variable '某某某' was corrupted.
原创,转载请注明出处