Для M$ есть во-первых Dr. Memory. Но он как и Valgrind не будет
работать со статически распределённой памятью. Поэтому от
статического распределения лучше вообще отказаться. Если malloc
якобы не нужен и опасен -- то можно распределить всю память в
момент старта программы, а потом не трогать. Но во всяком случае
для динамической памяти тот же Dr. Memory успешно начинает
работать.