Есть так много итераций, выполняемых циклом, вы проектируете, что является основными причинами сбоя вашей программы или бесконечной замкнутой петли.
Ответ на то, что вы ожидаете знать очень комплекс из-за некоторых ключевых нот ---- >>
1. Это зависит от платформы, что программа работает на как окна, linux или mac. Я ДУМАЮ, что объем памяти не ограничен ничем, кроме физической памяти.
Факт-> Хотя физическая память может быть расширена виртуальной памятью, не все платформы имеют функцию «виртуальной памяти». C не имеет понятия виртуальной памяти. Malloc выделяет непрерывную память (то есть бок о бок или вместе в ram).
Итак, это зависит от того, как платформа обрабатывает запрос. Это зависит от реализации C.
2. Наибольшее количество (в байтах), представляемое стандартным типом 'size_t' (объявляется). Это значение может и зависит от реализации. Обратите внимание, что это значение не обязательно так велико, как хост (, т. Е. Конечный пользователь) доступная память платформы.
QUES. Есть ли ограничения на это? Где я должен получить этот вид информации?
Ans.Аргумент Malloc - size_t, а диапазон этого типа - [0, SIZE_MAX], поэтому максимально возможный запрос - SIZE_MAX, значение которого варьируется от реализации до реализации и определяется в.
Примечание: - Будет ли запрос для байтов SIZE_MAX успешным, зависит от факторов, выходящих за рамки этой группы.
Вы на встроенном аппаратном обеспечении? Если это так, поведение не предсказуемо, см. Http://stackoverflow.com/questions/22422733/malloc-behaviour-on-an-embedded-system – Boern
Во-первых, ваш код неверен. Вы не проверяли успех 'malloc()', поэтому вы не достигаете того, чего хотите. _ «сколько памяти действительно выделяется в этом примере?» _ -> возможно, нет. –
Ваш код не то, что вы хотите. Вы должны выделить куски памяти, например, 1Mb в цикле, пока 'malloc' не вернет' NULL'. Теперь вы знаете (более или менее), сколько памяти вы можете выделить в своей системе. –