Каждое из ваших выделений рассчитано на 250 миллионов float
с, что требует значительного гигабайта памяти. Скорее всего, вы создаете 32-разрядное приложение, и это означает, что у вас есть только 2 ГБ (возможно, 3 ГБ для специальной конфигурации ОС) адресного пространства пользовательской виртуальной памяти.
Если не набрать free
, вы пытаетесь выделить три блока по 1 ГБ на единицу, что не подходит; вероятно, один из вызовов malloc
или calloc
не выполнен, и вы не проверяете возвращаемое значение, поэтому даже не видите его. Когда вы пытаетесь использовать возврат NULL
из неудавшегося выделения, происходит сбой.