value = malloc(len);
A();
free(value);
发现value在free的时候,值被修改了。看反汇编,value是寄存器s1。在调用A()时,s1压栈,返回后弹栈。说明在A()出现了堆栈泄漏的问题。
在A()
{
unsigned int a[100];
变量1;
...
变量n;
unsigned int b[100];
memset(a, 0xff,sizeof(a));
memset(b, 0xff, sizeof(b));
...
语句n;
检测a[]是否为全F
检测b[]是否为全F
如果在语句n后面,a[]或者b[]被修改了,说明语句n发生了堆栈泄漏。
阅读(986) | 评论(0) | 转发(0) |