Отличным способом ограничения требований к памяти является максимально возможное использование libc или других стандартных библиотек, которые могут быть динамически связаны. Каждая дополнительная DLL или общий объект, который вы должны включить в свой проект, представляет собой значительный объем памяти, который вы можете избежать при записи.
Кроме того, используйте объединения и битовые поля, где это применимо, загружайте только часть данных, над которыми работает ваша программа, в память и убедитесь, что вы компилируете с параметром -Os (в gcc; или аналогом вашего компилятора). ), чтобы оптимизировать размер программы.