Составители:
Второй массив содержит значения типа Boolean для каждого элемента
динамического массива. Когда программа добавляет или удаляет строки, она
устанавливает для соответствующего элемента массива bInUse значение TRUE,
если позиция занята, и FALSE, если она пуста. При добавлении строки
программа ищет пустой элемент в массиве bInUse, а при удалении определяет
позицию элемента массива, обращаясь к массиву iListLookup.
Рис 2.1 Окно, позволяющее добавлять новые элементы в список
При запуске программы осуществляется вызов функции CreateList,
которая резервирует память и инициализирует вспомогательные структуры
данных. Команда VirtualAlloc резервирует блок адресов размером 1 Мб.
Подобно остальным зарезервированным страницам, адреса должны быть
помечены флагом PAGE_NOACCESS,
пока они не будут закреплены.
BOOL CreateList ( void )
{
int i;
// зарезервировать 1 Мб адресного пространства
pBase = VirtualAlloc( NULL, // начальный адрес (произвольный)
MAX_ITEMS * ITEM_SIZE, // один мегабайт
MEM_RESERVE, // зарезервировать;
//не закреплять
PAGE_NOACCESS ); // нет доступа
if( pBase == NULL )
{
ShowErrorMsg( __LINE__ ) ;
return( FALSE ) ;
18
Второй массив содержит значения типа Boolean для каждого элемента динамического массива. Когда программа добавляет или удаляет строки, она устанавливает для соответствующего элемента массива bInUse значение TRUE, если позиция занята, и FALSE, если она пуста. При добавлении строки программа ищет пустой элемент в массиве bInUse, а при удалении определяет позицию элемента массива, обращаясь к массиву iListLookup. Рис 2.1 Окно, позволяющее добавлять новые элементы в список При запуске программы осуществляется вызов функции CreateList, которая резервирует память и инициализирует вспомогательные структуры данных. Команда VirtualAlloc резервирует блок адресов размером 1 Мб. Подобно остальным зарезервированным страницам, адреса должны быть помечены флагом PAGE_NOACCESS, пока они не будут закреплены. BOOL CreateList ( void ) { int i; // зарезервировать 1 Мб адресного пространства pBase = VirtualAlloc( NULL, // начальный адрес (произвольный) MAX_ITEMS * ITEM_SIZE, // один мегабайт MEM_RESERVE, // зарезервировать; //не закреплять PAGE_NOACCESS ); // нет доступа if( pBase == NULL ) { ShowErrorMsg( __LINE__ ) ; return( FALSE ) ; 18
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »