一、概述
SGCheck是一种用于检查栈中和全局数组溢出的工具。它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察。
栈中的数据:例如函数内声明数组int a[10],而不是malloc分配的,malloc分配的内存是在堆中。
SGCheck和Memcheck是互补的:它们的功能不重叠。
Memcheck对堆数组(如malloc分配的内存)执行边界检查和使用后检查。它还可以检查堆或栈分配创建的未初始化值(值的有效性检查)。但它不会对栈或全局数组执行边界检查。
SGCheck只对栈或全局数组进行边界检查,不做其它检查。
二、使用
1、SGCheck没有命令行参数,使用方法如下:
valgrind --tool=exp-sgcheck ./a.out
2、例子
main.c源码
int main()
{
int i;
int a[