Esta página deve ajudá-lo.
Apenas um pequeno programa em c:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int max = -1;
int sleep_interval = 2;
int mb = 0;
char* buffer;
if(argc > 1)
max = atoi(argv[1]);
if(argc > 2)
sleep_interval = atoi(argv[2]);
while((buffer=malloc(1024*1024)) != NULL && mb != max) {
memset(buffer, 0, 1024*1024);
mb++;
printf("Allocated %d MB\n", mb);
}
printf("sleeping for %d\n",sleep_interval);
sleep(sleep_interval);
return 0;
}
Tenha em mente que, sem dar ao programa uma quantidade máxima de memória, ele alocará até esgotar a quantidade que puder (pode ser limitada por ulimit, quantidade de memória ou tamanho do espaço de endereço).