Why leaked memory is not shown with -fsanitize=address set on macOS?

See below. I don't see a memory leak error on macOS for the following program.

What on macOS that is different from Linux makes the compiled program
behaves differently?

$ cat main.c
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
  void *p = malloc(100);
  printf("%p\n", p);
  return 0;
}
$ clang --version
Debian clang version 11.0.1-2
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
$ clang -fsanitize=address main.c
$ ./a.out
0x60b0000000f0

I’m not set up to test lsan on macos, but I would guess that clang is somehow not actually generating the call to malloc. Don’t know how that would happen, exactly.

Does the call to malloc actually occur?

In this trivial example leak check happens soon after return from main(). So even if malloc was called, the pointer may still survive somewhere in uninitialized bytes of the active stack.

I suspect at least one of leaks will be detected in this case:
int main(int argc, char *argv[]) {
void *p = malloc(100);
printf("%p\n", p);
p = malloc(100);
printf("%p\n", p);
return 0;
}