我所知道的内存溢出分为两种,一种是数组溢出,一种是堆栈溢出。
一种内存溢出的定位方法:一般内存溢出多为数组,先查找到内存溢出的变量,然后查看mp1地址映射文件,按照序列,以溢出的变量为基地址,向上查找,找数组,然后在代码中查到该数组的序列填充,大约查找3至5个数组,如果均没有发现溢出,使用下面的方法。
另一种内存溢出的定位方法:类似于pcb板的割线,利用while死循环进行定位,这种方法的大前提是需要知道内存溢出的变量。
语句如下:
While(A);
A在这里必须是全局变量,A可以是某一变量,也可以是某一语句,比如A<10。当A条件满足时,程序会在这里死循环。
while(A);的放置,该语句使用时最好大于2句,放置位置尽可能的囊括多的代码,若果没有大致思路可以试试将函数放置在主程序中,随便放置3个以上的语句。
举个栗子:
uint8 B(void)
{
uint8 ret;
while(A<10000)
/*********************************
This is your Code。
************************************/
while(A<10000);
return ;