Не падает. Собрала вот такой код:#include <stdio.h>
#include <stdlib.h>
main ()
{
void *ptr = malloc(100*1024*1024); free(ptr);
}
Каких либо out of memory нет, но счетчик UBC увеличивается (проверяла в OVZ контейнере, в PVC и в машине не тестила).
Как Вы и говорили, поставила:
vzctl set <VEID> --privvmpages 64M:64M --save (последние vzctl допускают указание M, G, K вместо страниц памяти)
Так же сильно снизила kmemsize, и oomgurantpages сделала маленьким, что бы гарантия выделения памяти была заведомо меньше 64M
Сейчас никаких выводов бы делать не хотела, но думаю, что на машине без swap, и в PVC контейнере поведение будет идентичным.
Я не стесняюсь говорить о том, что сейчас c не знаю (так как не моя специализация, хотя, конечно, в будущем хотела бы добавить c/c++ в свою копилку знаний) и разбираться _сейчас_ в приведении типов, что бы распечатать указатель или неудачное выделение памяти я бы не хотела, а без этого моделирование в PVC в SLM памятью, или в машине лишено смысла, так как и в ovz-контейнере без UBC счетчиков ничего бы видно и не было, так как бинарник не падает (нужно вернуть значение указателя)
Напишите, пожалуйста все-таки то, что позволит смоделировать проблему (если она еще существует), а так же, пожалуйста, все-таки дайте ссылку на документацию, где это декларируется как фича, что бы Ваше утверждение не стало голословным.
Я бы хотела увидеть от Вас, в идеале, полный конфиг контейнера в его UBC части, с обоснованием, почему в одном случае падает, в другом нет, что бы исключить разночтения, испорченный телефон (вы подразумевали одно, я по своей дурости подумала третье)