First of all: that only works in debug builds/modes.
Secondly: during runtime, memory is initialized with something like 0xEEEEEEEE for "empty" as in allocated but not initialized memory.
Third: freed memory is filled with 0xDEADDEAD or 0xDDDDDDD.
So while the program is running, you stumble over double frees and uninitialized memory easy, not so easy over leaks.
Fourth: to find leaks, the code is required to free all memory on (during) program termination. Under the assumption, that the same "free logic" is called as during ordinary runtime. E.g. closing a document, frees everything regarding that document without a leak. While that makes sense for a document or a simple window, it makes not that much sense for an graph of controller objects.
Anyway: normal leaks are not detected during runtime. And to prevent false positives, you have to have free logic where a normal program would not need it.
Strange coincident, I toyed around with it this morning - before this story popped up.