A binary program is stored in form of instructions on the hard drive. Usually, when you execute the program, it is copied into RAM, because that is a lot faster to read and write than your hard disk (though currently, companies try to close that gap with NVMe SSDs). But sometimes, especially on embedded devices, there isn't a lot of RAM available. So instead of cluttering your RAM with a copy of the program, the operating system starts reading the program directly from the storage. Though the binary is on your hard drive, the application heap and stack (for your variables and pointers) can still be created in memory .