LinuxForum.Fans
Тема

Max array size

Автор: Peter 5 сообщений 1657 просмотров
#205454

Здравствуйте!

Есть ли в C ограничение на размер объявляемого массива?
Сегодня в проверочной программе написал

text
char buf[8388608];

а позже пытался с ним то-то делать, в т.ч. вызовом bzero, то во всех случаях
происходил Segmentation fault, а когда объявил

text

char * buf;
void *ptr;
.....
ptr=malloc(8388608);
buf=(char*)ptr;

то с массивом можно было работать.

Пётр.

#205472

Вы наверное объявляли массив внутри какой-нибудь функции. Если так, то массив создавался в стеке, а он не резиновый, поэтому и Segmentation Fault

#205484

Нет, массив объявлялся в main. В ней же было объявление

text
char arr[262144];

с ним проблем не было.

Пётр.

#205487

Хинт: main() -- такая же функция, как и любая другая.

#205496
bormant написал:
Хинт: main() -- такая же функция, как и любая другая.

Да, я уже подумал это. Просто я по возможности избегаю malloc, хотя в программах
в Qt постоянно использую new для отвода пмамяти сразу под все элементы типа int
или char, а потом назначаю каждой из них указатель.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.