Access violation crashes, if due to a dangling pointer, are hard to catch.
And evasive, any tiny change and they stop crashing. if the dangling pointer point to memory that contains something else, it may just do nothing. or it may change some random other behaviour of the app....
As I said, valgrind is good at this, But linux only.
heaptrc with keepreleased, ... well sometimes, but it wont be any good if you can't resolve the printed traces.
compiling with llvm as backend may or may not have an option. I have no idea / just something I read once...