Вместо этого используйте ulimit -v.
Объяснение:
Текущие реализации libc изменяют размер сегмента данных только для небольших malloc, большие malloc используют анонимный mmap (), поэтому единственный способ действительно ограничить программу - ограничить виртуальную память (ключ -v).
Надеюсь это поможет.
PS: я знаю, что этот вопрос очень старый, но не смог найти решение с Google, поэтому решил все равно ответить.