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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

farcalloc

 
 Функция            Выделяет блок памяти в глобальной динамической
 
                    области памяти.
 
 
 
 Синтаксис          #include<alloc.h>
 
                    void far * farcalloc(unsigned long nunits,
 
                                        unsigned long unitsz);
 
 
 
 Файл, содержащий   alloc.h
 
 прототип
 
 
 
 Описание
 
                    Функция farcalloc  распределяет память в глобальной
 
                    динамической области памяти под  массив,  состоящий
 
                    из  nunits элементов,  причем каждый элемент длиной
 
                    unitsz байтов.
 
 
 
                    При распределении памяти в глобальной  динамической
 
                    области памяти помните следующее:
 
 
 
                    - Может  быть  выделена  вся  память с произвольной
 
                      выборкой (ЗУПВ).
 
 
 
                    - Могут быть выделены блоки, размером более 64К.
 
 
 
                    - Для  доступа  к  выделяемым  блокам  используются
 
                      "дальние" указатели (с атрибутом "far").
 
 
 
                    В моделях   памяти:  компактных,  больших  и  сверх
 
                    больших,  farcalloc соответствует calloc, однако не
 
                    идентична.   Она   использует  параметр  типа  long
 
                    unsigned, в то время, как обычные функции (например
 
                    malloc) используют параметры типа unsigned.
 
 
 
                    В модели   памяти  tiny  эту  функцию  использовать
 
                    нельзя.
 
 
 
 Возвращаемое       Функция farcalloc возвращает указатель
 
 значение           на новый блок, или NULL, если для размещения нового
 
                    блока не хватило памяти.
 
 
 
 Переносимость      Функция уникальна для системы DOS.
 
 
 
 Смотрите также     calloc, farcoreleft, farfree, farmalloc, malloc.
 
 
 
 Пример:
 
 
 
 #include<stdio.h>
 
 #include<alloc.h>
 
 #include<string.h>
 
 #include<dos.h>
 
 
 
 int main(void)
 
 {
 
    char far *fptr;
 
    char *str = "Hello";
 
 
 
    /* выделить память */
 
    fptr = farcalloc(10,sizeof(char));
 
    if(fptr)
 
    {
 
       /* скопировать строку "Hello" в выделенный блок памяти. */
 
       /* Замечание. Используется функция movedata, поскольку вы
 
                     можете работать в малой (small) модели памяти,
 
                     в которой нельзя использовать функции копирова-
 
                     ния строки, которые подразумевают, что пара-
 
                     метры имеют тип near */
 
       movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr),
 
                strlen(str));
 
       /* вывести строку. Обратите внимание на модификатор F*/
 
       printf(" Строка с указателем far: %Fs\n",fptr);
 
       /* освободить память */
 
       farfree(fptr);
 
    }
 
    return 0;
 
 }

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

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




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



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


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