LINUX.ORG.RU

История изменений

Исправление gag, (текущая версия) :

не выделить памяти больше, чем есть физической

в смысле RAM+swap?

Да, с учётом параметра vm.overcommit_ratio

Ого, это значит, что теперь имея, например 4GB ram+swap может быть:

p1 = malloc(4GB);
if (!p1) {
   printf("Sorry, no more memory!\n");
   exit(1);
}
p2 = malloc(20MB);
if (!p2) {
   printf("Sorry, no more memory!\n");
   exit(1);
}
// we are here thanks to overcommit :)
// but somewhere later we may get OOM-kill...
Т.е., например, присвоив значение p2[56] = 123; мы можем уложить прогу? Вместо корректного сообщение о том, что памяти-то больше нет?

Хорошо, а можно/как теперь в С ловить это?

Исходная версия gag, :

не выделить памяти больше, чем есть физической

в смысле RAM+swap?

Да, с учётом параметра vm.overcommit_ratio

Ого, это значит, что теперь имея, например 4GB ram+swap может быть:

p1 = malloc(4GB);
if (!p1) {
   printf("Sorry, no more memory!\n");
   exit(1);
}
p2 = malloc(20MB);
if (!p2) {
   printf("Sorry, no more memory!\n");
   exit(1);
}
// we are here thanks to overcommit :)
// but somewhere later we get segfault?..
Т.е., например, присвоив значение p2[56] = 123; мы можем уложить прогу? Вместо корректного сообщение о том, что памяти-то больше нет?

Хорошо, а можно/как теперь в С ловить это?