目前我正在使用 Valgrind 来检查内存泄漏并将 Purify 作为替代方案。Valgrind 可以找出在堆中创建但不在堆栈中创建的数组的访问冲突。
char* a = static_cast<char*>(malloc(sizeof(char) * 5));
a[7] = 'c';
printf("%c\n", a[7]);
free(a);
Valgrind 在上面的代码中指出了无效的读写,但在下面的代码中没有。
char a[5] = {0};
a[7] = 'c';
printf("%c\n", a[7]);
Purify 能否识别出这两个代码块的访问冲突?