Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11650
Последний выпуск: 19.06.2015

movedata

[ Оглавление ]
               MOVEDATA
                
               #include <memory.h>           Требуется   только   для об-
               #include <string.h>           явления  функции, использует
                                             либо   <string.h>,      либо
                                             <memory.h>
            
              void movedata (srcseg,  srcoff,  destseg,  destoff,
                          nbytes);
              int srcseg;                    адрес исходного сегмента
              int srcoff;                    смещение исходного сегмента
              int destseg;                   адрес результирующего сегмента
              int destoff;                   смещение  результирующего сег-
                                             мента
              unsigned nbytes;               количество байтов

                
               Описание.
         
               Функция movedata копирует nbytes байтов, начиная с исходно-
         го адреса, обозначенного srcseg:srcoff, в адрес результата, обоз-
         наченный destseg:destoff. Функция movedata предназначена для  пе-
         ресылки  far-данных  в  программах малых или средних моделей, где
         адреса сегментов данных не известны. В программах больших моделей
         может быть использована функция memcpy,  когда  адреса  сегментов
         известны.
                
               Возвращаемое значение.
                
               Возвращаемого значения нет.
               См. также memcpy, segread, FP_SEG.
                
               Замечание!  Значения  сегментов  для  аргументов  srcseg  и
         destseg могут быть получены с  помощью  применения  либо  функции
         segread, либо макроопределения FR_SEG.
               Функция movedata не обрабатывает все случаи пересылок с пе-
         рекрытием  корректно  (пересылки  с перекрытием происходят тогда,
         когда часть результирующего поля является в этой же области памя-
         ти частью исходного). Пересылки с перекрытием корректно обрабаты-
         ваются функцией memcpy.
                
               Пример:
            
               #include <memory.h>
               #include <dos.h>
               char far *src;
               char far *dest;
               .
               .
               .
               /* следующие операторы пересылают 512
                   ** байтов данных из src в dest.   */
            
               movedata (FP_SEG (src), FPSEG(dest),
                          FP_OFF(dest), 512);

            
               _ MSIZE
             
               #include <malloc.h>       требуется только для  объявления
                                         функции
                
               unsigned_msize(ptr);
               char *ptr;                указатель на блок памяти
                
               Описание.
                
               Функция _ msize возвращает размер блока памяти (в  байтах),
         распределенного посредством вызовов calloc, malloc или realloc.
                
               Возвращаемое значение.
                
               Величина в байтах возвращается как беззнаковое целое.
               См. также calloc, _expand, malloc, realloc.
         
        
               Пример:
                
               #include <stdio.h>
               #include <malloc.h>
               main()
               {
               long *oldptr;
               unsigned int newsize=64000;
            
               oldptr=(long*)malloc(10000*sizeof(long));
               printf("Size of memory block pointed to by
                     oldptr=%u\n", _msize(oldptr));
            
               if (_expand(oldptr,newsize) != NULL)
               printf("expand was able to increase block to
                      %u\n", _msize(oldptr));
               else
                printf("expand was able to increase block to
                       only %u\n", _msize(oldptr));
               }

              _NFREE
            
               #include <malloc.h>      требуется только  для  объявления
                                        функции
               void _nfree(ptr);
               char near *ptr;          указатель  на  захваченный блок
                                        памяти
            
               Описание.
            
               Функция _nfree освобождает блок памяти. Аргумент ptr указы-
         вает на ранее захваченный блок памяти посредством _nmalloc.
               Числом  освобожденных байтов является число байтов, опреде-
         ленных при захвате блока. После вызова освободившиеся блоки  при-
         годны к размещению.
            
               Возвращаемое значение.
      
               Возвращаемого значения нет.
               См.  также _nmalloc, free, malloc.
                
               Замечание.  Попытка  освободить  неверный ptr (указатель не
         захватывается посредством _nmalloc) может привести к последующему
         захвату и вызвать ошибку.
                
               Пример:
      
               #include <malloc.h>
               #include <stdio.h>
      
               char near *alloc;
      
               /* захватывает 100 байтов и затем освобождает их */
         
      
               /* проверяет указатель на правильность: */
      
               if ((alloc=_nmalloc(100))==NULL)
               printf("unable to allocate memory\n");
               else {
                .
                .
                .
               /* освобождает память для heap: */
            
               _nfree(alloc);
                   }
      
              _NMALLOC
      
               #include <malloc.h>       требуется только для  объявления
                                         функции
      
               char near *_nmalloc(size);
               unsigned size;            количество байтов в захваченном
                                         блоке
      
            
               Описание.
      
               Функция _nmalloc внутри умалчиваемого сегмента данных  зах-
         ватывает блок памяти, по крайней мере не меньше, чем из size бай-
         тов. (Блок может быть больше, чем из size байтов,но принадлежащих
         пространству, которое требуется для выравнивания).
            
               Возвращаемое значение.
            
               Функция _nmalloc возвращает near-указатель на char. В памя-
         ти, на которую указывает возвращаемое значение, гарантировано вы-
         равнивание  для хранения любого типа объекта. Чтобы получить ука-
         затель на тип, отличный от char, используется преобразователь ти-
         па возвращаемого значения.
               Возвращается значение NULL, если пространство не было  зах-
         ваченным.
               См. также _nrfee, _msize, malloc, realloc.
         
               Пример:
            
               #include <malloc.h>
               int *intarray;
               /* захватывает память для 20 целых */
               intarray=(int*)_nmalloc(20*sizeof(int));

               _NMSIZE
            
               #include <malloc.h>       требуется только  для объявления
                                         функции
               unsigned _nmsize(ptr);
               char near ptr;            указатель на блок памяти
         
            
               Описание.
            
               Функция  _nmsize  возвращает  размер блока памяти в байтах,
         захваченного посредством _nmalloc.
            
               Возвращаемое значение.
            
               Функция _nmsize возвращает размер в байтах, как беззнаковое
         целое.
               См. также  _ffree,  _fmalloc,  _fmsize, malloc, _msize,
        _nfree, _nmalloc.
            
               Пример:
            
               #include <malloc.h>
           
               #include <stdio.h>
            
               main()
                 {
                char near *stringarray;
            
                stringarray=_nmalloc(200*sizeof(char));
                if (stringarray != NULL)
                   printf("%u bytes allocated\n",
                          _nmsize(stringarray));
                else
                   printf("Allocation request failed.\n");
                }
         
               

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог