Первый раз с этим сталкиваюсь... Программа в VC 2008 Express, Runtime - /MDd, ОС - XP x64. Памяти на борту - 4Гб. Запустил в дебаге, прога сожрала 1.5 Гб памяти и вылетела, т.к. очередной malloc вернул NULL. Из-за чего это могло случиться???
Ну, мало ли, что ОС - х64. Если выставлена конфигурация проекта - х86 (32бит), то, сожрав 1,5 гига памяти, прога вполне может столкнуться с ее нехваткой. ЗЫ 1,5 гига? Ну и проги вы пишете
Вот код)) Код (Text): lastElement->next->inputSet = (double *) malloc(sizeof(double) * i); Ну да, у меня в конфигурации проекта стоит (/MACHINE:X86) Только я всегда думал, что 32х битному процессу адресовать и выделить 4Гб (ну почти 4) не проблема. Я не прав?? Ну я сам офигеваю, но ничего не сделать. Только если с диском работать, что сильно снижает скорость. Прога работает с большим (сотни тысяч) количеством изображений. Уточню: вылетает, когда скушала 1600 Мб. Я смотрю в диспетчере задач.
Span Скорее всего, в виртуальном адресном пространстве не осталось непрерывных блоков достаточного размера... Только я всегда думал, что 32х битному процессу адресовать и выделить 4Гб (ну почти 4) не проблема. Я не прав?? Да. Во-первых, для user-mode есть только 2 GB виртуального адресного пространства. Во-вторых, если делается попытка выделить сразу большой объем памяти, это может провалиться из-за фрагментации (много мелких свободных блоков и ни одного достаточно большого)
Понял, спасибо. А есть вообще возможность работать с большим объемом ОП из user-mode?? Например, 3Гб данных.