以下示例说明了如下过程:准备程序,使用 discover 对其检测,然后运行该程序并生成有关检测到的内存访问错误的报告。此示例使用了一个访问未初始化数据的简单程序。
% cat test_UMR.c #include <stdio.h> #include <stdlib.h> int main() { // UMR: accessing uninitialized data int *p = (int*) malloc(sizeof(int)); printf("*p = %d\n", *p); free(p); } % cc -g -02 test_UMR.c % a.out *p = 131464 % discover a.out % a.out
discover 输出指示在何处使用了未初始化的内存以及在何处对其进行了分配,同时提供结果摘要,如下图中所示。