认真看 VSIDE 错误提示信息可以解决大部分错误
心路历程
今天一块开发项目的mm突然告诉我程序崩溃了:表面原因是因为添加了一个xml工具模块,去掉调用的部分就不会奔溃了。
我觉得问题没辣么简单:因为C++机制的原因可能某一块的内存操作问题导致而且这个工具模块用在了很多地方没出过问题
然后我开始寻找问题:
gdb 调试信息显示确实在调用哪个函数后奔溃:stack_chk_fail.即是栈溢出 但是一般导致栈溢出的原因:1.数组越界 2.sprintf()、memcpy()、strcpy()等函数 3.写入越界
那个函数并没有上述这些,只是声明了俩个第三方类的常量;[我做出了第一次尝试:将常量对象改为指针在构造函数中初始化-new在析构函数中释放-free]是的没有看错new-free 我使用这一种奇怪的组合因为使用delete会导致另外一种奔溃 没有崩溃但是并没有真正的解决问题
我在stackflow上搜索一篇文章:
字节对齐导致的栈奔溃https://stackoverflow.com/questions/58197050/pragma-packpush-without-corresponding-pop-leads-to