LinuxForum.Fans
Тема

Работа с массивом

Автор: Prog2012 12 сообщений 1888 просмотров
#279266

Помогите с данной задачей

Вы пишете программу, которой требуется обработка большого массива в оперативной памяти. Программа выглядит примерно так:
#include <stdio.h>
#define SIZE 1000000
int main()
{
int a[KIT_MAX];

printf("%d", sizeof(a[SIZE]);

return 0;
}

Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение? Как бы Вы изменили программу?

У меня пока мысли насчет использования динамического массива

#279272

Нагуглите про limits.h

#279288

В таком виде программа вообще не имеет смысла.


Пётр.

#279291

Сам знаю, но такой код представили

#279296
"Prog2012" написал:
Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение?

нижнее ограничение - это ответ на риторический вопрос, «при объявлении массива какого размера на стеке пора обрывать руки», а верхнее — размер стека. можно изменить через setrlimit().

"Prog2012" написал:
Как бы Вы изменили программу?

Use the Heap, Luke.

на самом деле такая прога будет компилироваться и работать с любым SIZE до SIZE==UINT_MAX т.к. компилятор выкинет всё окромя вызова printf'а.

#279301

Спасибо!
Я вариант с динамическим массивом не прокатит?

#279341
"Prog2012" написал:
Помогите с данной задачей

хотите пройти Курсы информационных технологий в яндексе?(:

#279349
"Prog2012" написал:
Я вариант с динамическим массивом не прокатит?
"Fat-Zer" написал:
Use the Heap, Luke.
#279584
"Prog2012" написал:
{
int a[KIT_MAX];
"Prog2012" написал:
Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение?

размером стека.

"Prog2012" написал:
Как бы Вы изменили программу?

man 3 malloc
читать до полного просветления. гуглить примеры.

"Prog2012" написал:
Я вариант с динамическим массивом не прокатит?

да.

#280915

Из правильных ответов - это например дописать

static int a[KIT_MAX];

Или до main() ввести его.

Про размер стека: ulimit -s

А так вы её вообще пробовали собирать? Там во-первых не хватает одной скобки в ptintf. Во-вторых пособирайте с -Wall - получите сообщение о том, что %d ожидает int, а sizeof - unsingbed int возвращает.

И да, самое кошерное, a[KIT_MAX] вообще-то указываетна элемент вне массива.

И да, 64x компилятор

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