Помогите с данной задачей
Вы пишете программу, которой требуется обработка большого массива в оперативной памяти. Программа выглядит примерно так:
#include <stdio.h>
#define SIZE 1000000
int main()
{
int a[KIT_MAX];
printf("%d", sizeof(a[SIZE]);
return 0;
}
Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение? Как бы Вы изменили программу?
У меня пока мысли насчет использования динамического массива
Работа с массивом
Нагуглите про limits.h
В таком виде программа вообще не имеет смысла.
Пётр.
Сам знаю, но такой код представили
Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение?
нижнее ограничение - это ответ на риторический вопрос, «при объявлении массива какого размера на стеке пора обрывать руки», а верхнее — размер стека. можно изменить через setrlimit().
Как бы Вы изменили программу?
Use the Heap, Luke.
на самом деле такая прога будет компилироваться и работать с любым SIZE до SIZE==UINT_MAX т.к. компилятор выкинет всё окромя вызова printf'а.
Спасибо!
Я вариант с динамическим массивом не прокатит?
Помогите с данной задачей
хотите пройти Курсы информационных технологий в яндексе?(:
да)
Я вариант с динамическим массивом не прокатит?
Use the Heap, Luke.
{
int a[KIT_MAX];
Цель: Нужно увеличить SIZE до максимально возможной величины. Чем определяется ее ограничение?
размером стека.
Как бы Вы изменили программу?
man 3 malloc
читать до полного просветления. гуглить примеры.
Я вариант с динамическим массивом не прокатит?
да.
Можете ему не отвечать - набор туда http://events.yandex.ru/events/kit/ уже закончен)
Из правильных ответов - это например дописать
static int a[KIT_MAX];
Или до main() ввести его.
Про размер стека: ulimit -s
А так вы её вообще пробовали собирать? Там во-первых не хватает одной скобки в ptintf. Во-вторых пособирайте с -Wall - получите сообщение о том, что %d ожидает int, а sizeof - unsingbed int возвращает.
И да, самое кошерное, a[KIT_MAX] вообще-то указываетна элемент вне массива.
И да, 64x компилятор