Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

brk

 
 Функция            Изменяет размещение в памяти сегмента данных.
 
 
 
 Синтаксис          #include<alloc.h>
 
                    int brk(void * addr);
 
 
 
 Файл, содержащий   alloc.h
 
 прототип
 
 
 
 Описание           Функция brk используется для динамического
 
                    изменения количества  памяти,  распределенного  для
 
                    сегмента   данных   вызываемой   программы.  Данное
 
                    изменение    производится    посредством     сброса
 
                    программного    "значения    прерывания",   которое
 
                    является  первым  адресом  после   конца   сегмента
 
                    данных. Таким образом, количество отведенной памяти
 
                    будет увеличено,  если  будет  увеличено  "значение
 
                    прерывания".
 
 
 
                    brk устанавливает       "значение       прерывания"
 
                    соответственно параметру addr и  аналогично  меняет
 
                    количество памяти.
 
 
 
                    Если для  удовлетворения запроса будет недостаточно
 
                    памяти,  функция завершится с ошибкой без изменения
 
                    распределения памяти.
 
 
 
 Возвращаемое       При успешном завершении функция brk возвращает зна-
 
 значение           чение, равное 0. При ошибке возвращается значение
 
                    -1 и   глобальной  переменной  errno  присваивается
 
                    значение:
 
 
 
                      ENOMEM - Не хватает памяти.
 
 
 
 Переносимость      brk поддерживается  на  системах  UNIX.  Функция не
 
                    совместима с Windows.
 
 
 
 Смотрите также     coreleft, sbrk.
 
 
 
 Пример:
 
 
 
 #include<stdio.h>
 
 #include<alloc.h>
 
 
 
 int main(void)
 
 {
 
    char *ptr;
 
    printf("Изменение объема выделенной памяти с помощью brk");
 
    ptr = malloc(1);
 
    printf("Перед вызовом brk() свободно %lu байт\n",coreleft());
 
    brk(ptr+1000);
 
    printf("После вызова brk() свободно %lu байт\n",coreleft());
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS