Multi-Threaded & Multi-Process Programming
Multi-threaded and multi-process programs add memory debugging difficulties. Almost always, the place where memory is allocated is far removed from the place where it is deallocated. Or, a program can write into an allocated memory block from hundreds or even thousands of different places. In a multi-threaded program, any thread can write into a block, and the thread using the block may not be the one that wrote into it.
MemoryScape can help. It is unique in its ability to track memory across threads and across processes. It understands MPI and OpenMP, as well as other parallel disciplines.
Programs Keep Getting More Complex
Most developers today are members of a team, each providing code that is integrated together. This means developers no longer understand all of a program's code. Because developers have their own coding styles, there are assumptions behind the way their code is written. For example, one developer assumes that an object manages its own memory. A second assumes that the code using an object manages the memory.
As developers integrate their code together, they need a tool that lets them see problems as they occur.