LINUX.ORG.RU

Проблема с выделением памяти...


0

0

Кто-нибудь сталкивался с проблемой выделить большой объем памяти в C-программе под Linux? Создаю глобальные массивы (около 15~20 Мб) и прога вылетает, судя по всему, при инициализации. Как только немного уменьшаю массивы, все нормально запускается. Может лучше выделить память malloc'om? И есть ли вообще ограничения на выделения памяти в Linux? Помогите, кто чем может..!

anonymous

Где массивы храняться?

Лимиты?

Zenom ★★★
()

#include <stdlib.h>

void f () {
char p[16*1024*1024];
unsigned int i;
for (i = 0; i < 16*1024*1024; i ++)
p[i] = '\0';
return;
}

int main (void) {
f();
return 0;
}

Бугага, стек не резиновый :)

anonymous
()
Ответ на: комментарий от anonymous

> Бугага, стек не резиновый :)

Дык, Линух же... Убери лимиты -- и будет резиновым!

А по замыслу автора вопроса, как я понимаю,

void f () {

и

char p[16*1024*1024];

надо местами поменять, чтобы массив в данных оказался. Тогда проблем со стеком не будет. И почему-то оно у него сегфолтится...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>И почему-то оно у него сегфолтится...

Ну дык понятно почему, ежели лимит превышен.

Zenom ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.