Happy time for all experts. Сделал небольшую програмку на Си со вставкой на ассемблере. Борланд Турбо Си 3.0 Она в приложении(вставка). Пашет. Но если я пытаюсь внутри функции избавиться от локальных переменных и присвоить значения параметрам, передаваемым в функцию(в ассемблерную вставку), напрямую, без посредничества локальных переменных, то ничего не получается. Вопрос: а почему так? Почему вариант в приложении правильный, а без локальных переменных не працюэ. Знаю. У меня нет коректного перевода BCD чисел в тот формат, который нужен и данный вариант правилен только для 30 ноября. Это я потом доделаю. Меня интересует локальные переменные. Поскольку вопрос двойственный, то отправил в две рассылки. Настойчивый оффтопик(в прошлых вопросах он был, но вряд ли вы его получили) - Offtopic of Fun: В Far Managerе нажимаем
F11, выбираем список процессов(List Process), ищем explorer.exe, нажимаем F8, подтверждаем удаление, нажимаем F10, выходим из Фара и ... ляпота Работает также в Win2000 Server, если админ ленивый:)
Приветствую Вас, Начинающий ламер! Скорее всего проблемма связано с тем, что компилятор не понимает правильно переменные, находящиеся в другом сегменте. Ответ отправлен: 06.12.2002, 19:31 Отправитель: Pinman
Вопрос № 412
Здравствуйте! Как в C++ Builder в TImage устранить мерцание при обновлении рисунка? Большое спасибо! Fuhrer ---- http://windows-reg.narod.ru
Приветствую Вас, Fuhrer! Синхронизируйте обновление рисунка с кадровой разверткой монитора. Ответ отправлен: 06.12.2002, 17:29 Отправитель: Andrew Vext
Вопрос № 413
Всем привет! Вот такой вопрос... Какой наибольший объем блока памяти можно выделить с помощью new? Только не надо говорить, что теоретически 4Гб (или, как пытался доказать нам Broken Sword - пара терабайт). Мне не надо теоретически. Мне интересно с практической точки зрения - ну, допустим, надо мне выделить 600 Кбайт массив - всегда ли сможет оно выделиться? А если несколько Мегабайт? Были у кого-нибудь траблы? Спасибо.
Добрый день, baldr! Невозможно сказать точно, сколько возможно выделить памяти, так как на это влияет множество факторов, таких как объем свободной памяти, etc... Ответ отправлен: 06.12.2002, 18:15 Отправитель: Gibbel Отвечает Pinman
Доброе время суток, baldr! Ну, это зависит от того, в каком режиме ты работаешь. Если в реальном, то максимальный режим - 64K, а если в защищенном или расширенном, то столько, сколько даст ОС. Рекомендация: чтобы избежать проблемм, не создавай блоки более 64К Ответ отправлен: 06.12.2002, 19:26 Отправитель: Pinman Отвечает Pablo
Доброе время суток, baldr! Вот кусок из рассылки Крутого Меча: "А как же обстоит дело с линейным адресным пространством? Здесь все еще проще: линейное адресное пространство процесса ТЕОРЕТИЧЕСКИ могло бы составлять максимум – 4 Гб, но т.к. верхние 2 Гб ОС Win NT защищены от доступа на уровне СТРАНИЦ, то получается, что ЛИНЕЙНОЕ АДРЕСНОЕ ПРОСТРАНСТВО ПРОЦЕССА В ОС Win NT = 2 Гб. В Win 9x – чуть больше, 3 Гб." Так что если Винды и помощьью своего механизма виртуализации позаолят то ты можешь с помощью new выделить до 2Гб памяти, т.к. new выделяет тока блок памяти из линейного пространства адресов. Ответ отправлен: 08.12.2002, 17:23 Отправитель: Pablo Отвечает Dzik
Доброе время суток, baldr! Все таки макс обьем 4 гб или несколько террабайт! У меня работал ~900 mb. Правда выделялся из-за глюков. Но 8 метров выделяю постоянно и никаких проблем!
Ответ отправлен: 06.12.2002, 18:13 Отправитель: Dzik Отвечает vitya
Здравствуйте, baldr! все зависит от состояния системы в данным момент времени. Если ты даже треснешь, то больше чем sizof(RAM) + sizeof(PageFile) тебе выделить не удасться, на самом же деле, очевидно, что там часть памяти занята другими процессами и системой, поэтому реальное, что тебе удасться выделить меньше. Теперь, если ты работаешь под нт/2000/ХП, то ты на самом деле теоретически можешь выделить примерно 2гб памяти. Я лично больше десяти мегабайт одновременно не выделял - у меня эта память выделялась. Считай, что гиг (если фзически он может быть выделен), ты выделить сможешь. Кусками я выделял 2.6гб (2000 сервер, где можно поставить каждому процессу по 3гб адресного пространства). Вот так... Ответ отправлен: 07.12.2002, 09:16 Отправитель: vitya Отвечает Jadd
Здравствуйте, baldr! Такие объемы выделять нецелесообразно. Но, можно. Траблов у меня небыло, поскольку, я - благоразумен и не предстваляю задачи, которая требует таких массивов данных. Если ты мне приведешь хоть пару примеров надобности в таких блоках. Ответ отправлен: 09.12.2002, 03:11 Отправитель: Jadd Отвечает Avl2k
Приветствую Вас, baldr! Теоретически на 32-битных платформах действительно 4Гб (new имеет параметром unsigned int). А практически - сильно зависит от реализации библиотеки CRT, операционной системы и ее настроек. Лично у меня в VC++ 6.0 на Win2000 (new реализован через HeapAlloc) при физической памяти 256Мб и файле подкачки до 760Мб максимально выделяется 800Мб. С уважением, Avl2k. Ответ отправлен: 09.12.2002, 11:23 Отправитель: Avl2k
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.