Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024

Что можно сделать если не хватает памяти?

23.03.2017, 10:35. Показов 12155. Ответов 81

Студворк — интернет-сервис помощи студентам
При компиляции программы в ВС3.1 MS-DOS через интерфейсное меню Compile (Alt+F9) выходит сообщение, что недостаточно оперативной памяти для компиляции и программа останавливается, каким образом можно добавить памяти через настройку среды борланд си, если компьютер имеет следующие параметры:
1. На компе одна ось FreeDos (не эмуляция через DosBox или виртуальную машину или еще как то)
2. Оперативной памяти на компе 4 гига
3. Программа mem.exe видит расширенную память и пишет Total memory free 3,5 гига
4. После запуска bc3.1 в меню Compile - informatiom выходят сообщения:
*Extended memory in use - 20 meg
*Expanded memory (EMS) - 20 meg
*Avialable memory - 20 meg
5. Код на с++ вместе с заголовочными файлами не более 300 килобайт

P.S. Я так понимаю, что у меня в настройках среды для выполнения программы используется только 20 мегабайт из доступных 3,5 гигабайт. (на компе других программ нет только эта) По идее, этих 20 мег должно бы хватить для компиляции 300 килобайт кода или я ошибаюсь? И позволяет ли борланд си 3.1 под досом настраивать больше доступной памяти чем 20 мегабайт и как это можно сделать, если можно?

И еще эта же сама я программа нормально компилируется через bcc.exe с параметрами и памяти для компиляции ей хватает, и ошибок не выдает, единственно что она использует при компиляции уже готовый объектный модуль.

Тогда вытекает еще второй вопрос, если в среде нельзя настроить подключения большей оперативки, может быть тогда запускать на компиляцию не программу *.cpp , а проект с этим самым готовым файлом *.obj В общем подскажите пожалуйста в какую сторону мне можно двигаться в данной ситуации?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2017, 10:35
Ответы с готовыми решениями:

Выводится сообщение о том, что не хватает памяти, хотя памяти хватает
Файлы подкачки отключил и включать не собираюсь. Когда свободной памяти остаётся примерно гиг-полтора начинают "помирать"...

Не хватает памяти, что делать?
У меня centos стоит на виртуальной машине. Мне нужно установить gcc на него, вон че выдает, я итак расширила комп до 516Мбайт

Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc?
По УМОЛЧАНИЮ при динамическом выделении, если не хватает памяти, возвращается NULL или bad_alloc? Так и не нашел конкретного ответа....

81
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
25.03.2017, 17:40  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nmcf Посмотреть сообщение
Ты себе противоречишь.
Нет не противоречу )) это описка / недописка во втором блоке имелось в виду при компиляции в пошаговом режиме (я же не писатель, просто колхозник). Думаю надо попробовать использовать Watcom 32x разрядный, и второй вариант писать с нуля по имеющимся функциям. Пока наверно достаточно информации, спасибо всем за помощь.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
25.03.2017, 18:48
Цитата Сообщение от седьмой Посмотреть сообщение
при компиляции в пошаговом режиме
Это как? Понятие "пошаговый режим" относится к отладке, а не к компиляции.
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
25.03.2017, 21:30  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Это как? Понятие "пошаговый режим" относится к отладке, а не к компиляции.
ну да мне нужна отладка, но она же не идет сама по себе борланд си для отладки, запускает сперва компиляцию и если нет ошибок то только потом отладку. Я не претендую на точную формулировку, но компиляция в моем случае относится именно к отладке...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
25.03.2017, 21:55
Отладка - это запуск программы. Просто графическое окно (но не компилятор) присобачивается сбоку к исполняемой задаче и как бы влияет на её процесс исполнения

В реальности это и не графическое окно присобачивается, а программа-отладчик, но в такие дебри влезать не будем, коль скоро ты в этом не понимаешь
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 08:28  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
В реальности это и не графическое окно присобачивается, а программа-отладчик, но в такие дебри влезать не будем, коль скоро ты в этом не понимаешь
Нет уж, столько ответов было в теме, доведите уж пожалуйста до конца, конечно я могу что то не понимать,

Не по теме:

вы там может всю жизнь занимаеетесь одним и тем же, а у нас в колхозе только 2 инженера приходится заниматься всем одновременно и железом и проиборами и серверами, а сколько разных программ через меня прошло это и не сосчитать, начиналось все клиппера в 92м, потом кларион, фокспро, 1с, php, c#, sql, mysql, ассемблер, с++, scpi, labview Просто приезжают исполнители, что то настраивают , а сопровождаем и дорабатываем сами, поэтому конечно знания везде поверхностные. Ну и образование тоже наверно что то значит, одно дело окончить местный политех и другое хотя бы к примеру Физтех, у меня там дочь учится на 2м курсе, так лучше меня знает и си и ассемблер, но загрузка у них мама не горюй... это я так к слову, а форум этот очень хороший, много в чем помогли лично мне.

А сейчас по существу вопрос, компиляция у меня нормально проходит через командную строку вот картинка (для примера делаю DosBox на работе все тоже самое, но стоит FreeDos 1.2 сразу на винте без всякой эмуляции) bcc.jpg все нормально компилируется и экзешник нормально запускается на выполнение, а потом я делаю проект в среде борланд си рис bc.jpg по клавише ф8 хочу пройти программу в пошаговом режиме, но вместо переходя на первую строчку борланд начинает снова компилировать программу и вываливается с ошибкой что ему борланду памяти мало. Что я не правильно делаю объясните пожалуйста?
Миниатюры
Что можно сделать если не хватает памяти?   Что можно сделать если не хватает памяти?  
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 08:33  [ТС]
Может надо брать другой какой то отладчик отдельный? А не из самой среды борланд си?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.03.2017, 08:50

Не по теме:

Цитата Сообщение от седьмой Посмотреть сообщение
у нас в колхозе только 2 инженера
В колхозе пастухи, скотоводы и доярки, а компьютеров вообще не видели никогда.


Цитата Сообщение от седьмой Посмотреть сообщение
Может надо брать другой какой то отладчик отдельный?
Он тебе ассемблер покажет. Наверное.
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 09:02  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
В колхозе пастухи, скотоводы и доярки, а компьютеров вообще не видели никогда.

Не по теме:

да нет, стоят несколько компов в сельсовете и даже сервер есть и локальная сеть тянется на ферму, все как у людей, ну может не супер новая техника, если мы еще ms-dos используем



Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Он тебе ассемблер покажет. Наверное.
я тоже так думаю, нет это мне не надо. Я же если в борланд си 3.1 беру маленький код типа Привет мир, он нормально его компилирует на лету и заходит в пошаговый режим без проблем, правда там всего 2 строки, но это не важно, главное все работает
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.03.2017, 09:12
Неужели программа настолько большая? А без отладки ты свои изменения не можешь внести?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 09:26  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Неужели программа настолько большая? А без отладки ты свои изменения не можешь внести?
да нет программа маленькая всего 200 килобайт да плюсом стандартные заголовочные файлы еще кило на 50. Наверно смогу по другому - писать с нуля только те функции которые мне нужны брать из документации, но мне казалось так труднее, проще было бы пройти по готовому коду , посмотреть что откуда берется и куда уходит и потом уже добавлять и писать что то свое. Там сперва должен где то грузиться драйвер и конфигурация платы расширения сом порта из текстового файла, я думал можно это все как то проще посмотреть, дописать, отладить и сдать. Но раз так нельзя, то пойду другим путем, спасибо. Попробую сам писать по сопровождающей документации...

Добавлено через 2 минуты
А вот пишут, что есть такой Турбо отладчик Turbo Debugger это случайно не то что мне хочется?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.03.2017, 11:51
Ну а в среде не тот же самый отладчик? Для Turbo Debugger должна быть symbol table, чтобы он не только цифры с адресами показывал. Пишут, что "При работе с Borland C или C++ нужно выполнять компиляцию с параметром /v и компоновку (TLINK) с параметром /v, чтобы получить информацию для отладки".
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 12:11  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Пишут, что "При работе с Borland C или C++ нужно выполнять компиляцию с параметром /v и компоновку (TLINK) с параметром /v, чтобы получить информацию для отладки"
где это пишут . не подскажете? если в командной строке bcc.exe то это одно, а если в среде борланд си то это другое, там есть настройка в среде, компилировать для отладки и компилировать без отладки и еще есть возможность указать опции при компиляции, вы откуда это взяли, можете дать ссылку?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.03.2017, 12:28
Ключи для командной строки. Ну если в среде есть настройки такие, то используй их.
Цитата Сообщение от седьмой Посмотреть сообщение
где это пишут
http://lib.com.ua/books/7/47n42.html

У тебя же должны быть древние книги про Borland, там это всё описано.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
26.03.2017, 12:50
Лучший ответ Сообщение было отмечено седьмой как решение

Решение

Цитата Сообщение от седьмой Посмотреть сообщение
а потом я делаю проект в среде борланд си рис bc.jpg по клавише ф8 хочу пройти программу в пошаговом режиме, но вместо переходя на первую строчку борланд начинает снова компилировать программу и вываливается с ошибкой что ему борланду памяти мало. Что я не правильно делаю объясните пожалуйста?
Для того, чтобы можно было пошагово исполнять из-под отладчика, программу нужно компилировать специальным образом. Есть подозрение, что при нажатии на F8 сначала запускается перекомпиляция в режиме со сбором отладочной информации, а она требует больше памяти в процессе работы компилятора

Не по теме:

Цитата Сообщение от седьмой Посмотреть сообщение
Нет уж, столько ответов было в теме, доведите уж пожалуйста до конца, конечно я могу что то не понимать
Я уже неоднократно на форуме говорил одну и ту же мысль. Живя в IDE, никогда не поймёшь устройство мира, сколько ни объясняй. Попробуй хотя бы неделю поработать в линксовой консоли или её аналоге. Т.е. компилировать все программы вручную, запускать отладчик вручную и т.п. Узнаешь о мире больше, чем после прочтения кучи книг

1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 17:58  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
У тебя же должны быть древние книги про Borland, там это всё описано
да нашел отличное описание на русском языке по настройке среды борланд си, это и делаю, но результат пока ноль. Не могу понять по какому пити идти, толи писать код с нуля по функциям которые описаны в документации, то ли урезать готовую программу до минимума, что бы она запустилась в пошаговом режиме и разобраться как там все это работает, в результате ни тут ни там...

Добавлено через 4 минуты
Цитата Сообщение от Evg Посмотреть сообщение
Я уже неоднократно на форуме говорил одну и ту же мысль
кажется дошло, вы предлагаете компилировать в командной строке, затем линковать в командной строке, везде с опцией V, и потом запустить отладчик тоже в командной строке? Или как запустить отладчик. PS. все бы хорошо, но сроки, сроки жмут... в любом случае покопаю еще и в эту сторону, спасибо.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
26.03.2017, 18:00
Цитата Сообщение от седьмой Посмотреть сообщение
кажется дошло, вы предлагаете компилировать в командной строке, затем линковать в командной строке, везде с опцией V, и потом запустить отладчик тоже в командной строке?
Я ничего не предлагаю. Выше ты высказал сожаление, что не понимаешь работу мира. Я всего лишь объяснил, откуда идёт непонимание

Цитата Сообщение от седьмой Посмотреть сообщение
в любом случае покопаю еще и в эту сторону, спасибо
В условиях, когда поджимают сроки, копать будет некогда. Это задача "на потом"
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 19:54  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
В условиях, когда поджимают сроки, копать будет некогда. Это задача "на потом"
ну значит подпирают еще не сильно, пока есть 3 направления, всем спасибо буду все копать сразу по трем.

Добавлено через 46 минут
Кто то спрашивал, большая ли программа? 200 килобайт, да ну какая же это большая. Ан нет, почитал сейчас документацию, разработчики пишут что модель памяти надо использовать Large, а это оказывается по тем старым меркам программа большая

Не по теме:

Large (большая). Модели large и huge применяются только в очень больших программах. Дальние указатели используются как для кода, так и для данных, что дает предельный размер 1 Мб для обоих.

и советуют делить программу на отдельные части, так что вот еще один вариант нарисовался. Я так понимаю, делить на части файл ххх.срр и те файлы что идут без ошибок брать как объектные

Не по теме:

, дальше не думал...



Добавлено через 14 минут
Вот еще что нашел

Не по теме:

При компиляции модуля (некоторый исходный файл с несколькими подпрограммами), результирующий код для этого модуля не может превышать 64К, поскольку весь файл должен компилироваться в один кодовый сегмент. Это верно и в том случае, когда вы используете одну из больших моделей памяти (medium, large или huge). Если ваш модуль слишком велик и не помещается в одном кодовом сегменте (64К), вы должны разбить его на несколько файлов исходного кода, скомпилировать каждый из них по отдельности и затем скомпоновать их в одну программу. Аналогичным образом, хотя модель huge и позволяет иметь размер статических данных больше чем 64К, в каждом отдельном модуле статические данные не должны превышать 64К.

а у меня файл ххх.срр 210 килобайт, значит мне его нужно делить на 4 файла, а что разработчики 20 лет назад книги не читали что ли, фирма вроде солидная, зачем они запихнули все в один файл?

Добавлено через 5 минут
Одно из 2х или они сами отлаживали программу частями, а потом запихнули все в один файл. Или использовали модель памяти не Large которую рекомендуют сами, a Huge и то и другое не понятно, какой в этом смысл? Зачем так сделано? Исходники дают, а метод отладки скрыт? Или я чего то упустил и не понял?

Добавлено через 3 минуты

Не по теме:

Единственный разумный вариант это если программа в 200 килобайт по тем временам действительно считалась большой и ее писали сразу несколько человек, разные функции и использовали естественно модель памяти Large, а затем просто слили все вместе и запустили на продажу, вот только так я могу это понять и то не уверен.



Добавлено через 38 минут
Ну и еще один вариант это изменить модель памяти на Huge что то об этом было в документации и того имеем 5 вариантов:
1. Изменить модель памяти на Huge (программа огромная)
2. Использовать модель памяти рекомендованную, но разбить основной файл ххх.срр (210 кб) на 4, каждый из которых не более 64кб
3. Писать свой код с нуля, и брать только те функции которые описаны в документации как остновные, а дальше смотреть и расширять...
4. Обрезать основную программу до 64кб и попытаться компилировать в отладочном режиме.
5. Компилировать и линковать с опцией /v , но тут я не понял как и каком отладчике ее запускать?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 20:13  [ТС]
Хотя нашел вот такую информацию получается , что код в модели памяти Large может быть не более 1 мб, а вот данные должны быть менее 64кб. Тогда появляются 2 вороса, как я могу определитиь сколько места у меня занимают данные и почему памяти не хватает если код в 5 раз меньше допустимого в 1 мб для модели памяти large?
Миниатюры
Что можно сделать если не хватает памяти?  
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
26.03.2017, 20:15  [ТС]
И еще я же не дос использую а FdreeDos, а она 32х разрядная, следовательно в ней должно работать как в самой нижней строке
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
26.03.2017, 21:24
Цитата Сообщение от седьмой Посмотреть сообщение
И еще я же не дос использую а FdreeDos, а она 32х разрядная
Ещё раз: твой компилятор понятия не имеет о том, что у тебя 32-х разрядная система. Он не умеет такие коды строить
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2017, 21:24

Что если мне не хватает слоев
Доброго времени суток, максимальное кол-во слоев 31, и то 7 из них юнитовские, как можно еще добавить?

Что будет если не хватает мощности блока питания?
вопрос задан

Что происходит, если видеокарте не хватает блока питания?
Доброго времени суток! У меня есть видеокарта hd radeon 6770, есть два компа, один на сокете lga1156, второй lga 775. Первый компьютер...

Что можно сделать если нет вложенных индекс файлов в каждой папке???
Здравствуйте. Интересует такой вопрос: что можно сделать кроме как просто посмотреть директорию и содержимое папки на сервере если в каждой...

Что нужно сделать, если 1С пишет "Недостаточно памяти"
Информация взята с интернет ресурса - ******.(ru)/catalog/item3315.html Иногда бывает такое, что проводя какие либо операции в 1С, она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru