我编写了一个小代码来验证Valgrind是否能够检测到某些无效读取,看起来好像没有检测到。可以做到吗?
int a[2];
printf("test %d", a[100]);
如果交换要动态分配的数组,则Valgrind可以正常工作。 (大小为4的无效读取)
valgrind --tool = memcheck(默认工具)未检测到此类问题。
有一个实验工具valgrind --tool = exp-sgcheck目的是检测此类错误,但从未成功正确,该工具很可能会从valgrind发行版中删除。
据我所知,gcc / clang清理程序是用于检测此类错误的技术。