Форум программистов, компьютерный форум CyberForum.ru

Разбор кода - C++

Восстановить пароль Регистрация
 
Amursk55
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 5
08.10.2013, 07:33     Разбор кода #1
Есть такой код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include<vcl.h>
#pragma hdrstop
#pragma argsused
#include <dos.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <winnt.h>
staticintmaxindex;
staticintxfilter(EXCEPTION_POINTERS *xp)
{  intrc;
        EXCEPTION_RECORD *xr = xp->ExceptionRecord;
        CONTEXT *xc = xp->ContextRecord;
printf("Code %ul  ", (unsigned long)xr->ExceptionCode);
switch (xr->ExceptionCode) {
case EXCEPTION_BREAKPOINT:
                // just step over it (1 byte on x86)
                ++xc->Eip;
rc = EXCEPTION_CONTINUE_EXECUTION;
break;
case EXCEPTION_ACCESS_VIOLATION:
rc = EXCEPTION_EXECUTE_HANDLER;
break;
default:
                // give up
rc = EXCEPTION_CONTINUE_SEARCH;
break;
                    };
returnrc;
    }
char *getbuffer()
{SYSTEM_INFO info;
unsigned long a;
GetSystemInfo(&info);
char *rv;
rv=(char *)VirtualAlloc(NULL, maxindex=info.dwPageSize*6,     MEM_RESERVE,PAGE_READWRITE);                                         VirtualProtect (rv,1,PAGE_READONLY,&a);
returnrv;
}
 
voidputbuffer(char *p,int index, char value)
{ int code;
 
try
          {
p[index]=value;
       }
 
__except(code = xfilter(GetExceptionInformation()))
      {
printf("Index %d\n", index);
if (code!=EXCEPTION_EXECUTE_HANDLER)
    {printf("Neisvestmoeiscluchenie\n");
                 //exit(1);
    }
if (index>=maxindex)
{   printf("Vserabotaet, vsestranicizashisheniotzapisi\n");              //exit(2);
sleep ('100');
    }
VirtualAlloc(p+index, 1, MEM_COMMIT, PAGE_READWRITE);
putbuffer(p,index,value);
      }
}
 
voidfreebuffer(char *p)
{
VirtualFree(p,0,MEM_RELEASE);
 }
 
 
void main()
{  char *p=getbuffer();
for (inti=0;i<4000000;i++)   putbuffer(p, i, i&0xFF);
freebuffer(p);
 
printf("Pass #2\n");
  p=getbuffer();
    // now backwards for variety
for (int j=4000000-1;j>=0;j--)   putbuffer(p, j, j&0xFF);
freebuffer(p);
sleep ('100');
  }
Что означает в нем 10я строка и с 42й по 48ю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 07:33     Разбор кода
Посмотрите здесь:

Разбор кода программы C++
Доскональный разбор кода C++ C++
Разбор кода C++
C++ Разбор кода
Разбор кода CSharp C++
C++ Комментарии и разбор кода
C++ Разбор кода программы
Разбор кода C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
govorov
24 / 24 / 3
Регистрация: 25.09.2013
Сообщений: 76
08.10.2013, 08:09     Разбор кода #2
а тебе самому то удобно с таким оформлением код разбирать?

Добавлено через 4 минуты
Цитата Сообщение от Amursk55 Посмотреть сообщение
staticintmaxindex;
staticintxfilter(EXCEPTION_POINTERS *xp)
Это не скомпилится. Я рискну предположить, что должно быть так
C++
1
2
static int maxindex;
static int xfilter(EXCEPTION_POINTERS *xp)
10 строка - это заголовок функции, тело которой расположено сразу за ней ( "{" в начале 11 строки).
Yandex
Объявления
08.10.2013, 08:09     Разбор кода
Ответ Создать тему
Опции темы

Текущее время: 02:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru