Использование указателей bc++, страница 6

Модель

Имя файла

Размер файла (байт)

Small

Ex_1.cpp

1710

Ex_1.obj

2268

Ex_1.exe

16281

Large

Ex_1.cpp

1710

Ex_1.obj

2451

Ex_1.exe

18634

Из таблицы следует, что программа модели памяти Large, превосходит по объему программу модели памяти Small за счет использования дальних указателей.

На рисунке приведен порядок размещения в памяти компонентов программ Smal и Large:


Составим map – карту для модели Small. Она создается при установке отметки Options / Linker / Settings / Map File / Segments:

Start             Stop         Length       Name               Class

00000H     02922H      02923H      _TEXT              CODE

02930H     02F03H      005D4H     _DATA              DATA

02F04H     02F05H      00002H      _CVTSEG         DATA

02F06H     02F0BH      00006H     _SCNSEG         DATA

02F0CH     02F17H      0000CH     _INIT_               INITDATA

02F18H     02F5BH      00044H      _BSS                BSS

02F60H     02FDFH      00080H      _STACK           STACK

Program entry point at 0000:0000

Модель Large:

Start           Stop           Length           Name                    Class

00000H       02EB9H      02EBAH         _TEXT                   CODE

02EBAH      03111H       00258H          Ex_1_TEXT           CODE

03120H       0372DH       0060EH         _DATA                   DATA

0372EH       0372FH       00002H          _CVTSEG             DATA

03730H        03735H       00006H          _SCNSEG             DATA

03742H        037C5H      00084H          _BSS                     BSS

037D0H       0384FH       00080H          _STACK                STACK

Program entry point at 0000:0000

Для выполнения задания 2 выполним тестирование предыдущей программы на простых тестах. Например, при  отладке фрагмента программы «указатель на целое» можно менять значение инициализации переменной tmp, декремент значения указателя prt; при  отладке фрагмента программы «указатель на одномерный массив» можно менять число элементов массива mass1, их значения; при  отладке фрагмента программы «указатель на двумерный массив (матрицу)» можно менять количество элементов матрицы A[ ][ ], их значения; при  отладке фрагмента программы «указатель на структуру» можно проверить доступ к полям name, phone_number, age. Результаты тестирования приведены в отчете к лабораторной работе 10. Результаты тестирования показали, что программа работает верно, без ошибок.

При разработке данной программы можно прогнозировать следующие виды ошибок:

1)  Ошибки в выборе алгоритма; плохой выбор алгоритма становится ясным после его опробования.

2)  Ошибки общего характера; они возникают из-за недостаточного знания или понимания алгоритмического языка программирования.

3)  Синтаксические ошибки: пропуск знаков пунктуации, несогласованность скобок, кавычек, неверное написание операторов, функций, ключевых слов, использование указателей и т.д.

4)  Ошибки анализа; ошибки связанные либо с неполным учетом возникающих ситуаций, либо с неверным решением задачи.

5)  Ошибки физического характера, к ним относятся случайный пропуск некоторых операторов.

Среди выше перечисленных ошибок существуют и такие ошибки, которые компилятором могут вообще не обнаруживаться, например, неправильные параметры циклов.

При отладке программы в интегрированной среде ВС++ можно использовать меню Debug, которое имеет следующие компоненты:

Inspect- дает возможность получить информацию о данном объекте.

Evaluate / modify - позволяет изменить значение заданного объекта и просмотреть  результат.

Call stack- стек-вызов; показывает последовательность функций в программе, позволяет управлять функциональными запросами.

Watches - позволяет отслеживать изменение заданных объектов.

Toggle breakpoints– устанавливает / убирает  контрольные точки.