Я MacOS Big Sur. Насколько я знаю, Valgrind еще не поддерживает эту ОС. По крайней мере, я пробовал это.
После некоторого поиска в Google я переключился на LeakSanitizier и протестировал этот код C:
#include <stdlib.h>
void *p;
int main() {
p = malloc(7);
p = 0; // The memory is leaked here.
return 0;
}
В этом сообщении указано, что для clang, поставляемого с macOS, не включена поддержка -fsanitize=address
. Итак, я установил clang из доморощенного:
/usr/local/opt/llvm/bin/clang --version
clang version 11.0.0
Target: x86_64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin
Хорошо, попробуем:
Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/clang -g -fsanitize=address leak1.c -o leak1
Ancalagon:Codes anta40$ ./leak1
Ancalagon:Codes anta40$
Ничего не произошло. Возможно, попробуйте llvm-symbolizer
Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/llvm-symbolizer ./leak1
./leak1
Тот же результат. Возможно, я что-то здесь упускаю?