Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.01.2015
Сообщений: 4
1

Зависание при запуске проекта "Unhandled exception"

02.01.2015, 15:40. Показов 639. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Unhandled exception at at 0x76D32F71 in ConsoleApplication3.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0102F6C0.
В с++ почти полный чайник. Имеем только базовые знания о ЯП. В основном delphi. Помогите парни. Программа должна визуализировать принцип работы своппинга
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include "stdafx.h"
#include <iostream>
#include <string>
 #include <stdio.h>
typedef unsigned char byte;
typedef unsigned short word; // при условии, что sizeof(short) == 2
typedef unsigned int dword; // при условии, что sizeof(int) == 4
typedef long long unsigned int qword; //при условии, что sizeof(long long int) == 8;
 
class Page
{
public:
    unsigned char& operator[] (int idx)
    {
        return page[idx];
    }
 
private:
    static const int pageSize = 4 * 1024; 
    unsigned char page[pageSize];
};
 
class PGEntries
{
public:
    static const int tableSize = 1024; 
    virtual ~PGEntries() {}
 
protected:
};
 
class PTE : public PGEntries
{
public:
    PTE()
    {
        table = new Page*[tableSize];
 
        for (int i = 0; i < tableSize; i++)
        {
            table[i] = new Page;
        }
    }
 
    ~PTE() {/* освободить память */}
 
    Page* operator [] (int idx)
    {
        return table[idx];
    }
 
private:
    Page **table;
};
 
class PDE : public PGEntries
{
public:
    PDE()
    {
        table = new PTE*[tableSize];
 
        for (int i = 0; i < tableSize; i++)
        {
            table[i] = new PTE;
        }
    }
 
    ~PDE() { /* освободить память */}
 
    PTE* operator[] (int idx)
    {
        return table[idx];
    }
 
private:
    PTE **table;
 
};
 
class Descriptor {}; 
class GDT {}; 
typedef int Selector;
 
class VAddress
{
public:
    VAddress(Selector sel, dword addr)  :  _addr(addr), _sel(sel), PDEmask(0xFFC00000), PTEmask(0x3FF000), pageOffsetMask(0xFFF) {}
    // перегрузить конструктор для 64 битных адресов
 
    int getPDEIndex() const
    {
        return _addr & PDEmask;
    }
 
    int getPTEIndex() const
    {
        return _addr & PTEmask;
    }
 
    int getOffset() const
    {
        return _addr & pageOffsetMask;
    }
 
private:
    Selector _sel;
    dword _addr; // _addr можно сделать как union{qword, dword} для хранения 64 битных адресов
    dword PDEmask;
    dword PTEmask;
    dword pageOffsetMask;
 
};
 
class VMemmory
{
public:
    VMemmory(PGEntries *mainTbl) : CR3(mainTbl) {}
 
    void setByte (const VAddress &addr, byte val)
    {
        PTE *pte = (*(dynamic_cast<PDE*> (CR3))) [addr.getPDEIndex()];
        Page *page = (*pte)[addr.getPTEIndex()];
        (*page)[addr.getOffset()] = val;
    }
 
    void setWord (const VAddress &addr, word val) { /*реализвать*/}
    void setDword (const VAddress &addr, dword val) { /*реализвать*/}
    void setQword (const VAddress &addr, qword val) { /*реализвать*/}
 
    byte getByte (const VAddress &addr)
    {
        PTE *pte = (*(dynamic_cast<PDE*> (CR3))) [addr.getPDEIndex()];
        Page *page = (*pte)[addr.getPTEIndex()];
 
        return (*page)[addr.getOffset()];
    }
 
    word getWord (const VAddress&) { return 0;/*реализвать*/}
    dword getDword (const VAddress&) { return 0;/*реализвать*/}
    qword getQword (const VAddress&) { return 0;/*реализвать*/}
private:
    PGEntries *CR3; // в процессоре регистр CR3 содержит адрес таблицы верхнего уровня
};
 
int main ()
{
    PDE *pde = new PDE;
    VMemmory mem (pde);
 
    VAddress addr (123, 0x12345678); 
 
    mem.setByte(addr, 0xAB);
 
    std::cout << "Our byte = " << mem.getByte(addr) << std::endl;
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2015, 15:40
Ответы с готовыми решениями:

Unhandled exception при работе с матрицами
Делал лабораторную работу....и вот уже битых часа 3 сиже немогу понять в чем проблема и как ее...

Ошибка Unhandled exception at 0x00007FFFC03D06BC Microsoft C++ exception: std::invalid_argument at memor
Итак, цель проста, по клику мыши текст на экране должен заменяться, заменяется он результатом...

Unhandled exception at at 0x75E717D2 in ConsoleApplication24.exe: Microsoft C++ exception: std::out_of_range at memory l
Здравствуйте, помогите пожалуйста, при проходе через последний цикл выдаёт вот такую ошибку:...

Ошибка при написании класса: Unhandled exception std::bad_alloc at memory location
ПИшу свой клас Var, проблема в следующем из-за строчки first = first+1; вылетает ошибка ...

Выдаёт ошибку "Unhandled exception at 0x00007F exception: std::bad_alloc in memory location"
Добрый день, друзья не могли бы помочь разобраться, почему выдаёт такую ошибку? Вот #include...

2
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.01.2015, 16:45 2
Памяти не хватает. Ты пытаешься выделить 4 гига, думаю причина именно в размере.
Вообще такие вещи так не делаются, страницы мапятся по мере необходимости (новые страницы могут мапится на ранне использованные физические адреса). Заранее мапится всего несколько страниц.
0
0 / 0 / 0
Регистрация: 02.01.2015
Сообщений: 4
02.01.2015, 22:15  [ТС] 3
на деле памяти на ноуте у меня ~4гб. ладно, изменил размер до 1 гб. мы имеем "Необработанное исключение по адресу 0x00EA3D8C в ConsoleApplication3.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x48C784C8."
0
02.01.2015, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2015, 22:15
Помогаю со студенческими работами здесь

Unhandled exception at 0x7c812a5b : Microsoft C++ exception: std::bad_alloc at memory location 0x0012f350
что то я запутался совсем. подскажите где глюк? Считываю из XML данные: char*...

Ошибка при компиляции "Unhandled exception at ***"
выдаёт ошибку: Unhandled exception at 0x00ea1868 in trains.exe: 0xC0000005: Access violation...

Webkit.net unhandled exception при запуске
WinXP. WebKit.Net выкидывает при запуске исключение. Все файлики вебкита сложены в папку с...

Xnormal: Unhandled exception при Generate Maps
Здравствуйте. Проблема в том, что когда я нажимаю &quot; Generate Maps &quot; появляется ошибка &quot; Unhandled...

Unhandled Exception: System.Exception: Неверная последовательность
Подскажите плиз. Решаю курс на степике там задание Напишите функцию Even, возвращающую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru