Memory access errors are frequently occurred in computer programs written in C language. Such memory errors are one of the principal reasons for failures of C programs. Accordingly, a number of research works have suggested various techniques to detect them automatically. However, existing techniques have one or more of the following problems: inability to detect all memory errors, changing the memory allocation mechanism, incompatibility with libraries, and excessive performance overheads. To cope with these problems, in this paper we suggest a new and automated tool to detect dynamic memory access errors in C programs. The primary goal of our approach is to present a tool with high precision, better performance, and the relatively low space overheads.