Функция
Модифицирует размер ранее выделенного сегмента памяти.
Синтаксис
#include<dos.h>
int setblock(unsigned segx, unsigned newsize);
Прототип
dos.h
Описание
Функция setblock изменяет размер сегмента памяти. Функция segx - адрес сегмента, который был получен при вызове функции allocmem. Функция newsize - это новый необходимый размер сегмента в параграфах.
Возвращаемое значение
Функция setblock возвращает -1 при успешном завершении. При возникновении ошибки она возвращает размер в параграфах самого большого блока и устанавливает соответствующее значение в переменной _doserrno.
Переносимость
Функция setblock уникальна для DOS. Функция не совместима с Windows.
Пример
#include<dos.h>
#include<alloc.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
unsigned int size, segp;
int stat;
size = 64; /* выделить 1024 байта (16 * 64) */
stat = allocmem(size,&segp);
if(stat == -1)
printf("Память выделена в сегменте %X\n", segp);
else
{
printf("Ошибка. Максимальный размер блока: %d\n", stat);
exit(1);
}
stat = setblock(segp, size*2);
if(stat == -1)
printf("Расширенный блок в сегменте %X\n", segp);
else
printf("Ошибка. Максимальный размер блока: %d\n", stat);
freemem(segp);
return 0;
}