在C的开发中,经常会遇到EMT trap的情况,小弟刚开始的时候也是这样。遇到这样的问题老是摸不着头脑,不知道什么地方错了。
其实EMT trap一般都是数组越界、指针空间不够、以及内存溢出等情况造成的,我们只需要找出这些地方,并控制数组长度、指针申请的空间等就可以解决了,这边给大家也给自己记下几种解决方案:
1、加打印语句法:加打印信息,从出现EMT trap 的前面一条打印语句开始向后,在你认为可能会出现问题的地方加上相应的打印语句,以此类推,直到找到问题所在位置;然后对你不确定的变量逐一检查,增加数组长度、扩大指针内存等等,一般就可以找出问题所在了
2、注释法:找到EMT trap最近的一条打印语句,注释掉认为可能出现问题的代码,一段一段的注释直到找到问题所在
3、加#if 0法:2中是把可能出现问题的代码注释,这里可以用#if 0来不运行,原理是一样的,如:
#if 0
release code
#else
debug code
#endif
说到底,EMT trap是对内存的管理不当造成的,只要大家在编程多留心,如在malloc的同时在下面写上free,这样就最大程度上预防忘记释放内存的事发生了。如果大家有什么意见,请直接联系我。
由于个人技术水平有限,文章中会有错误,请大牛们,批评指正,防止误导其他人啊,谢谢。。。