Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на языке Pascal

Выпуск № 310
от 04.08.2004, 18:40

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 504
Отправлено ответов: 1892
Активность: 375.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ayl
Статус: Профессиональный
Общий рейтинг: 116.52
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 158.16
URL: Программирование на Паскале
[Подробней >>]
КиберТварь
Статус: Доверительный
Общий рейтинг: 180.48
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 504. Пожалуйста, разберите прилагаемый код и по возможности помогите с возникшими у меня вопросами. Сие в... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 504

Пожалуйста, разберите прилагаемый код и по возможности помогите с возникшими у меня вопросами. Сие вопросы приведены по тексту в виде комментариев.


Приложение:


Вопрос отправлен: 01.08.2004, 18:32
Отправитель: Геннадий

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Здравствуйте, Геннадий!
65536 byte = 64Kb - 1
Описание типа не предполагает размещения в сегменте. Это просто описание для компилятора. А в памяти размещаются ОБЪЕКТЫ определенного типа. Т.к. mas - это просто описание, а не объект, то память в этом случае не выделяется.
Сегмент стека устанавливается в опциях, по умолчанию он равен 16К, но модет быть до 64К.
Размер объекта не должен превышать 65520 байт. Поэтому и нельзя описать переменную размером 65535 байт.
С помощью функций распределения памяти (New, GetMem) память всегда выделяется кусками, кратными 8-ми байтам. Т.ч. все правильно определил. На самом деле формула для расчета выделяемой памяти под объект такова:
mem_size = ((obj_size + 7) div 8) * 8,
где:
obj_size - реальный размер объекта в байтах,
mem_size - размер выыделяемой памяти в байтак,
div - операция определения частного от деления.

Насчет бонуса. Вообще-то это пишется так (см.Приложение). К тому ж е есть простой признак деления на 8:
Число делится на 8 тогда и только тогда, когда три последние цифры числа делятся на 8:

n = 1000 * k + l => n делится на 8 <=> l делится на 8 (1000 : 8 = 125!).

И еще один: если сумма числа, состоящего из всех цифр исходного числа без последней, и половины последней цифры делится на 4, то тогда все число дедится на 8. Хорошо подходит для 3-хзначных чисел:

n = 10 * a + b = 8 * a + (2 * a + b). 8*a делится на 8 => n делится на 8 тогда и только тогда, когда 2 * a + b делится на 8, т.е. 2 * a + b = 8 * k <=> a + b/2 = 4 * k <=> a + b/2 делится на 4.


Приложение:

Ответ отправлен: 02.08.2004, 13:25
Отправитель: Ayl


Отвечает Boriss

Добрый день, Геннадий!
1) При таком объявлении VAR pp:^Byte; - память выделена уже и New ни к чему. Поскольку переменная указывающая и то, на что указывает, она находится в сегменте данных. New размещает другую область аналогичного размера, и связь со старой переменной теряется.
В добавок к полному ответу Ayl добавлю, что Паскаль при обычной настройке "выравнивает" на слово (2 байта = 16 бит) адреса всех переменных. DOS программы - 16 разрядные - и так достигалось ускорение доступа к переменным

Ответ отправлен: 04.08.2004, 15:04
Отправитель: Boriss


Отвечает КиберТварь

Добрый день, Геннадий!
Вопросы непонятны

Ответ отправлен: 02.08.2004, 21:35
Отправитель: КиберТварь



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (13)
Perl (6)
Builder / Delphi (17)
Pascal (22)
Basic / VBA (7)
Java / JavaScript (6)
PHP (17)
Криптография (8)
WinAPI (10)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (58)
"Железо" (45)
Поиск информации (15)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (21)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (8)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
Rambler's TopShop Rambler's Top100
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное