0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 13
1

Вызвано исключение в Test.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000

01.11.2015, 16:31. Показов 1663. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять в чем проблема есть код
CPP фаил
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
159
160
161
162
163
164
165
166
#include "cube.h"
struct Vertex
{
    Vertex() {}
    Vertex(
        float x, float y, float z
        )
    {
        _x = x;  _y = y;  _z = z;
    }
    float _x, _y, _z;
};
#define FVF_VERTEX (D3DFVF_XYZ)
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)  // Формат вершин
 
HRESULT cube::InitialObject()
{
    Device->CreateVertexBuffer(
        24 * sizeof(Vertex),
        D3DUSAGE_WRITEONLY,
        FVF_VERTEX,
        D3DPOOL_MANAGED,
        &_vb,
        0);
 
    Vertex* v;
    float W = 1.0f, H = 1.0f, L = 1.0f;
    _vb->Lock(0, 0, (void**)&v, 0);
 
    // build box
 
    // fill in the front face vertex data
    v[0] = Vertex(-W, -H, -L);
    v[1] = Vertex(-W, H, -L);
    v[2] = Vertex(W, H, -L);
    v[3] = Vertex(W, -H, -L);
 
    // fill in the back face vertex data
    v[4] = Vertex(-W, -H, L);
    v[5] = Vertex(W, -H, L);
    v[6] = Vertex(W, H, L);
    v[7] = Vertex(-W, H, L);
 
    // fill in the top face vertex data
    v[8] = Vertex(-W, H, -L);
    v[9] = Vertex(-W, H, L);
    v[10] = Vertex(W, H, L);
    v[11] = Vertex(W, H, -L);
 
    // fill in the bottom face vertex data
    v[12] = Vertex(-W, -H, -L);
    v[13] = Vertex(W, -H, -L);
    v[14] = Vertex(W, -H, L);
    v[15] = Vertex(-W, -H, L);
 
    // fill in the left face vertex data
    v[16] = Vertex(-W, -H, L);
    v[17] = Vertex(-W, H, L);
    v[18] = Vertex(-W, H, -L);
    v[19] = Vertex(-W, -H, -L);
 
    // fill in the right face vertex data
    v[20] = Vertex(W, -H, -L);
    v[21] = Vertex(W, H, -L);
    v[22] = Vertex(W, H, L);
    v[23] = Vertex(W, -H, L);
 
    _vb->Unlock();
 
    Device->CreateIndexBuffer(
        36 * sizeof(WORD),
        D3DUSAGE_WRITEONLY,
        D3DFMT_INDEX16,
        D3DPOOL_MANAGED,
        &_ib,
        0);
 
    WORD* i = 0;
    _ib->Lock(0, 0, (void**)&i, 0);
 
    // fill in the front face index data
    i[0] = 0; i[1] = 1; i[2] = 2;
    i[3] = 0; i[4] = 2; i[5] = 3;
 
    // fill in the back face index data
    i[6] = 4; i[7] = 5; i[8] = 6;
    i[9] = 4; i[10] = 6; i[11] = 7;
 
    // fill in the top face index data
    i[12] = 8; i[13] = 9; i[14] = 10;
    i[15] = 8; i[16] = 10; i[17] = 11;
 
    // fill in the bottom face index data
    i[18] = 12; i[19] = 13; i[20] = 14;
    i[21] = 12; i[22] = 14; i[23] = 15;
 
    // fill in the left face index data
    i[24] = 16; i[25] = 17; i[26] = 18;
    i[27] = 16; i[28] = 18; i[29] = 19;
 
    // fill in the right face index data
    i[30] = 20; i[31] = 21; i[32] = 22;
    i[33] = 20; i[34] = 22; i[35] = 23;
 
    _ib->Unlock();
    return S_OK;
}
 
VOID cube::Matrix()
{
    D3DXMATRIX MatrixWorld;      //  Мировая матрица (MatrixWorld)
    D3DXMATRIX MatrixView;       //  Матрица вида (MatrixView)
    D3DXMATRIX MatrixProjection; //  Матрица проекции (MatrixProjection)
                                 // MatrixWorld
    UINT  Time = timeGetTime() % 5000;
    FLOAT Angel = Time * (2.0f * D3DX_PI) / 5000.0f;
    D3DXMatrixRotationX(&MatrixWorld, Angel);
    Device->SetTransform(D3DTS_WORLD, &MatrixWorld);
    // MatrixView
    D3DXMatrixLookAtLH(&MatrixView, &D3DXVECTOR3(0.0f, 0.0f, -8.0f),
        &D3DXVECTOR3(0.0f, 0.0f, 0.0f),
        &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
    Device->SetTransform(D3DTS_VIEW, &MatrixView);
    // MatrixProjection
    D3DXMatrixPerspectiveFovLH(&MatrixProjection, D3DX_PI / 4, 1.0f, 1.0f, 100.0f);
    Device->SetTransform(D3DTS_PROJECTION, &MatrixProjection);
}
 
VOID cube::RenderingDirect3D()
{
    if (Device == NULL)        // Проверяем ошибки
        return;
 
 
    Device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 0), 1.0f, 0);
    // Начало сцены
    Device->BeginScene();
 
    // Здесь происходит прорисовка сцены
    Matrix();
 
    Device->SetStreamSource(0, _vb, 0, sizeof(Vertex));
    Device->SetFVF(D3DFVF_CUSTOMVERTEX);
    Device->SetIndices(_ib);
 
    // Вывод объекта
    Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12);
    // Конец сцены
    Device->EndScene();
 
    Device->Present(NULL, NULL, NULL, NULL);
}
 
VOID cube::DeleteDirect3D()
{
    if (_ib != NULL)
        _ib->Release();
 
    if (_vb != NULL)
        _vb->Release();
 
    if (Device != NULL)
        Device->Release();
 
    
}
H фаил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include "Include.h"
 
class cube
{public:
    HRESULT InitialObject();
    VOID Matrix();
    VOID RenderingDirect3D();
    VOID DeleteDirect3D();
private:
    IDirect3DDevice9*               Device;
    D3DXMATRIX                      _world;
    IDirect3DVertexBuffer9*         _vb;
    IDirect3DIndexBuffer9*          _ib;
};
выдает такую ошибку :
Вызвано исключение по адресу 0x002019DC в Test.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000.

Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно.
в этой строчке:
C++
1
2
3
4
5
6
7
    Device->CreateVertexBuffer(
        24 * sizeof(Vertex),
        D3DUSAGE_WRITEONLY,
        FVF_VERTEX,
        D3DPOOL_MANAGED,
        &_vb,
        0);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2015, 16:31
Ответы с готовыми решениями:

В цикле ожидания windows message Нарушение прав доступа при чтении "0xfeeeff9a"
Пытаюсь разобраться со вторым примером от Microsoft. Привожу код, который дает сбой: while(...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
#include <math.h> const double eps = 0.001; ///< желаемая точность /// N - размерность...

Вызвано исключение по адресу 0x01083191 в ConsoleApplication.exe: 0xC0000005: нарушение прав доступа при чтении по адрес
Вызвано исключение по адресу 0x01083191 в ConsoleApplication.exe: 0xC0000005: нарушение прав...

Вызвано исключение по адресу 0x003F2357 в Лабораторна 15.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x
Что это такое и как это исправить? Вот фрагмент кода где и есть проблема: ... int size = 9;...

3
1 / 1 / 0
Регистрация: 14.02.2014
Сообщений: 28
05.11.2015, 06:13 2
Цитата Сообщение от sedoy21 Посмотреть сообщение
Vertex* v; float W = 1.0f, H = 1.0f, L = 1.0f; _vb->Lock(0, 0, (void**)&v, 0);
Нужно: _vb->Lock(0, 24*sizeof(Vertex), (void**)&v, 0); Тоже самое и с индексами.
0
1 / 1 / 0
Регистрация: 20.07.2017
Сообщений: 19
21.07.2017, 18:26 3
Косячный код, но исключений нет, все работает нормас
C++
1
2
3
4
5
6
7
8
9
10
11
12
    
    LPDIRECT3DVERTEXBUFFER9 vBuf = NULL;
    void* Verts = NULL;
    dev->CreateVertexBuffer(sizeof(Triangle), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &vBuf, 0);
    vBuf->Lock(0, 0, &Verts, 0);
    memcpy(Verts, Triangle, sizeof(Triangle));
    vBuf->Unlock();
    dev->SetStreamSource(0, vBuf, 0, sizeof(Vertex3D));
    dev->SetFVF(D3DFVF_CUSTOMVERTEX);
    dev->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
    dev->Present(0, 0, 0, 0);
    vBuf->Release();
0
6 / 6 / 0
Регистрация: 28.10.2017
Сообщений: 17
28.10.2017, 21:01 4
Цитата Сообщение от sedoy21 Посмотреть сообщение
в этой строчке:
C++
1
2
3
4
5
6
7
Device->CreateVertexBuffer(
24 * sizeof(Vertex),
D3DUSAGE_WRITEONLY,
FVF_VERTEX,
D3DPOOL_MANAGED,
&_vb,
0);
Если именно на этой тогда скорее всего Device не инициализирован.
0
28.10.2017, 21:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 21:01
Помогаю со студенческими работами здесь

Вызвано исключение по адресу 0x01068781 в 2nd.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCCCCCCCC
Доброго времени суток, кто может помочь по вопросу? Постоянно выбивает ошибку. Мне кажется, там еще...

Вызвано исключение по адресу 0x01361A1E в Matrix 1.0.exe: 0xC0000005: нарушение прав доступа при записи
Вызвано исключение по адресу 0x01361A1E в Matrix 1.0.exe: 0xC0000005: нарушение прав доступа при...

Необработанное исключение по адресу 0x001B3371 в XXX.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDF
Делал консольную змейку и столкнулся вот с такой проблемой. void stena(char **arr) { int y...

Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC
Программа толком не написан, проверял ранд и возникли проблемы. Ф-ция ранд генерирует одно и тоже...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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