Use ulimit -v.
Explicação:
As atuais implementações de libc redimensionam o segmento de dados apenas para mallocs pequenos; mallocs grandes usam mmap anônimos (); assim, a única maneira de realmente limitar o programa é limitar a memória virtual (-v switch).
Espero que isso ajude.
PS: Eu sei que esta pergunta é muito antiga, mas não conseguiu encontrar uma solução com o Google, então decidi responder de qualquer maneira.