Migrating applications is necessary to provide fault tolerance in a distributed environment. In this paper, we present a new design that enables the heterogeneous migration of a general class of applications. Our approach can handle applications that use pointers. Our design is tailored for the C programming language, but can be adapted for other languages. We chose the C language because it is more difficult to handle than other languages, especially its pointer operations.