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

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

23.03.2017, 10:35. Показов 12146. Ответов 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
27.03.2017, 07:49  [ТС]
Студворк — интернет-сервис помощи студентам
Спасибо, упустил из вида.

Добавлено через 49 минут
А если мне компилировать мой код 32х разрядным компилатором, какой можно взять сомпилятор с++ для дос 32 не подскажете? , у меня операционка FreeDos 32x разрядная
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.03.2017, 09:28
Цитата Сообщение от седьмой Посмотреть сообщение
а у меня файл ххх.срр 210 килобайт
Это размер текста или размер объектного кода, который из него выходит?
Цитата Сообщение от седьмой Посмотреть сообщение
И еще я же не дос использую а FdreeDos, а она 32х разрядная
И в чём это выражается? На уровне DOS-программ больше 32 мегабайт там не доступно.
Цитата Сообщение от седьмой Посмотреть сообщение
Ну и еще один вариант это изменить модель памяти на Huge
Как это поможет в твоём случае?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 15:20  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Это размер текста или размер объектного кода, который из него выходит?
это размер файла ххх.срр я так понимаю размер текстового кода, а еще есть объектный файл, там наверно находится драйвер к плате он 40 кб , ну и плюсом стандартные заголово
Цитата Сообщение от nmcf Посмотреть сообщение
И в чём это выражается? На уровне DOS-программ больше 32 мегабайт там не доступно
чные файлы около 20 кб.
Цитата Сообщение от nmcf Посмотреть сообщение
И в чём это выражается? На уровне DOS-программ больше 32 мегабайт там не доступно.
мне и не нужно больше 32 мб это во первых, у меня всего одна программа в 200 кб чистого кода, я имел в виду что могу использовать не досовый компилятор с++, который работает с моделью памяти Huge до 1 мб, а могу например использвать компилятор Watcom 32 dos, который по идее должен работать и с FreeDos в том числе, но пока на могу понять какую именно надо скачивать версию, пока понял что 9ю, тогда я смогу откомпилировать файл более 1го мегабайта и зайти в режим отладки ничего не меняя и не разделяя, но это пока только теоретические выводы, проверить еще не успел, очень мало информации.
Цитата Сообщение от nmcf Посмотреть сообщение
Как это поможет в твоём случае?
на это я уже ответил , модель памяти Large может компилировать файлы не более 64 кб, а Huge до 1 мб, а так как файл у меня 210 кб, то с моделью памяти Huge он теоретически может откомпилироваться не в командной строке борланд си (bcc.exe с параметрами) , а прямо в среде ide и запуститься потом на отладку в пошаговом режиме. В чем я ошибаюсь?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 16:09  [ТС]
Казалось бы ну все финал, нашел компилятор который работает во FreeDos Watcоm 32 dos, во FreeDos нормально запустился повисел в свое удовольствие и выплюнул совершенно странные ошибки, самого простого файла, который легко компилируется в борланд си 3.1 , может в watkom нужно заголовочные файлы уже указывать как в винде без .h?
Миниатюры
Что можно сделать если не хватает памяти?   Что можно сделать если не хватает памяти?  
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.03.2017, 16:12
Если пишешь на современных стандартах Си++, то вместо <stdio.h> положено писать <cstdio>
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 16:19  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Если пишешь на современных стандартах Си++, то вместо <stdio.h> положено писать <cstdio>
нет конечно, пишу все еще под дос (фреедос), оказывается у них в каталоге дистрибутива есть папка sourse с примерами и там этот же нелло тоже есть и он с заголовочным файлом .h, значит что то с путями?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.03.2017, 16:21
И начиная с первого стандарта С++ (98 года) принято для main указывать возвращаемый тип int. Хотя WATCOM может поддерживать и void main.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 16:27  [ТС]
Или пора почитать книгу по watcom

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
указывать возвращаемый тип int.
спасибо попробую
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.03.2017, 16:31
Цитата Сообщение от седьмой Посмотреть сообщение
значит что то с путями?
Да.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 16:58  [ТС]
А проще всего было наверно не с watcom разбираться, а пропустил я мимо одну вашу хорошую идею компилировать в командной строке файл для отладки с нужным параметром, а потом уже отлаживать программу по шагам турбо дебуггере с++, кстати оказалось что в борланд 4.0 с++ в компиляторе есть bcc32.exe видимо компилятор тоже для 32 х разрядных дос систем но не факт, надо сперва его где то найти.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.03.2017, 17:01
Цитата Сообщение от седьмой Посмотреть сообщение
я мимо одну вашу хорошую идею компилировать в командной строке файл для отладки с нужным параметром
Эта идея была нужна только для понимания картины мира, а не для работы. Если у тебя в компиляторе не хватает памяти, то ему без разницы, не хватит памяти в командной строке или в IDE. Другое дело, что если ты разберёшься, как на сторонней машине и сторонним компилятором собрать код под freedos (по сути дела кросс-компиляция)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.03.2017, 17:02
седьмой, ты до сих пор не опробовал этот Turbo Debugger? Долго, что ли, скомпилировать с отладочной информацией?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 17:38  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
ты до сих пор не опробовал этот Turbo Debugger? Долго, что ли, скомпилировать с отладочной информацией?
нет, только сейчас дошло что компилировать можно в борланд си, а отлаживать в турбо си, думал в чем компилируется, в том и нужно отлаживать.

Добавлено через 4 минуты
Цитата Сообщение от Evg Посмотреть сообщение
как на сторонней машине и сторонним компилятором собрать код под freedos (по сути дела кросс-компиляция)
так он же не должен там собраться, там же нет платы этой расширения сом порта, она плата эта не просто сом порт, там еще какая то логика на плате микроконтроллерная и свой драйвер, к этой плате и настройка этого драйвера, я так понял как раз залита в объектный файл, по логике моей на стороннем компе скомпилироваться файл не должен...
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 19:19  [ТС]
Спасибо всем огромное, все получилось ура!!! В борланд с 3.0 в командной строке всс.ехе с парметром -v как вы и предлагали , все скомпилировалась, в турбо дебаггере 3.0 зашло в пошаговый режим отладки на с++, все супер. Дальше проблем будет еще наверно больше, но хоть это сдвинулось с мертвой точки.
Миниатюры
Что можно сделать если не хватает памяти?  
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.03.2017, 19:28
Цитата Сообщение от седьмой Посмотреть сообщение
так он же не должен там собраться, там же нет платы этой расширения сом порта
Когда-нибудь всё-таки поработай с консолью (в широком смысле). А потом прочти свои же слова и ужаснись от того, сколько глупости в них было написано
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
27.03.2017, 22:37  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
сколько глупости в них было написано
это не глупость, вы очень грубо так не честно, я с помощью нашего / вашего форума сделал очень большую работу и пусть она еще не вся. а только часть, но задел очень хороший, большего сказать не могу сам не знаю... на этом разрешите проститься в этой теме.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.03.2017, 10:09
Цитата Сообщение от седьмой Посмотреть сообщение
это не глупость
Я же говорю, научись работать в консоли. После этого сам поймёшь, сколько твоих проблем/непонимания росло из ничего на ровном месте. Самому же потом будет смешно всё это читать
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
28.03.2017, 12:05  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Самому же потом будет смешно всё это читать
Ну а смысл в этом какой, я же не студент, у меня работа, мне дальше надо работу работать, опять же сроки... собственно и так уже понятно что не понимал в какую сторону идти, но дальше работа еще интереснее, нужно сейчас разбираться с кодом с++ на котором настроено управление расширение сом порта, а это перелопатить 210 кб чужого кода по управлению микроконтроллером каким то там... смылса не вижу над собой смеяться, мне как то работать больше нравится, давайте закроем тему.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
28.03.2017, 12:18
Лучший ответ Сообщение было отмечено седьмой как решение

Решение

седьмой,
Цитата Сообщение от седьмой Посмотреть сообщение
Что можно сделать если не хватает памяти?
Что можно сделать если не хватает памяти?
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
20.05.2017, 11:54  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Какие-то у вас туманные представления о линуксе. Вас наверное им пугали как бабайкой за плохое поведение
Да нет, никто не пугал, он стоит дома второй операционкой, первая все же винда, пользовательский интерфейс у винды более понятный, да и графические программы на убунте например лично мне не запустить, а на винде на раз два три, хотя бы взять ArchiCad, хотя у вас такие программы будут наверно и в линуксе работать на раз, если вы такой продвинутый? Поделитесь опытом как ArchiCad на убунту установить?

Добавлено через 6 минут
Цитата Сообщение от nmcf Посмотреть сообщение
Он тебе ассемблер покажет. Наверное.
не он не ассемблер показывает, а именно си , крутая штука, очень пригодилась при отладке

Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Пишут, что "При работе с Borland C или C++ нужно выполнять компиляцию с параметром /v и
правило у вас пишут, все именно так и рабортает

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
Неужели программа настолько большая? А без отладки ты свои изменения не можешь внести?
очень большая 200 килобайт

Добавлено через 6 минут
Цитата Сообщение от nmcf Посмотреть сообщение
Там какую-то особую синхронизацию нужно реализовать для COM-порта
да нет просто интервалы времени очень короткие и надо в них уложиться, а драйвер вот он в готовом виде есть, просто надо его под себя перенастроить, убрать лишнее, например тестирование памяти и самого железа, вывод базы данных на экран, ручной ввод команд и прочее, что не нужно для конкретной задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2017, 11:54

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Сезонность закисления почв
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