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

Ошибка на стадии выполнения ptr = ptr; - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 16:50     Ошибка на стадии выполнения ptr = ptr; #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CObject
{
friend Parser;
// много полей методов, все должны заполняться в парсере
}
 
class Parser
{
CObject * object_
public:
    void CParser::LoadFromEcad(CObject * object, const std::wstring & path)
    {
        object_ = object; //  Тут происходит ошибка
    }
}
C++
1
2
3
4
5
6
7
Foo * soldat;
int main()
{
   CParser * parser = new CParser;
   CObject * object = new CObject;
   parser->LoadFromEcad(object,L"blabla.ecad");
}
Сообщение об ошибке:
Кликните здесь для просмотра всего текста
Unhandled exception at 0x777415de in ecad.exe 0xC00000005: Access violation writing location 0x0000004.

Заголовочный файл парсера и код вызываемой функции:
Кликните здесь для просмотра всего текста

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
#pragma once
#pragma comment( lib, "shlwapi.lib" )
 
#include <Windows.h>
#include <Shlwapi.h>
#include <io.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <string>
#include "userfn.h"
#include "usertypes.h"
#include "engine/Object.h"
 
class CParser
{
    CObject * object_;
    static std::wstring type_parsing[7];
public:
    void LoadFromEcad(CObject * object, const std::wstring & path);
private:
    bool IsFileExist(const std::wstring & file_path);
    void IndexParse(std::ifstream & file_stream, std::string & tmp);
    void VertexParse(std::ifstream & file_stream, std::string & tmp);
    void DiffuseParse(std::ifstream & file_stream, std::string & tmp);
    void AmbientParse(std::ifstream & file_stream, std::string & tmp);
    
};
void CParser::LoadFromEcad(CObject * object, const std::wstring & path )
{
    if (IsFileExist(path))
    {
        object_ = object; // ВОТ ОНА ОШИБКА
        std::ifstream file_stream( path.c_str() );
        std::string tmp;
        file_stream >> tmp;
        if ( tmp == "START" )
            while (tmp != "END")
            {
                file_stream >> tmp;
                VertexParse(file_stream,tmp);
                IndexParse(file_stream,tmp);
                DiffuseParse(file_stream,tmp);
                AmbientParse(file_stream,tmp);
            }
        file_stream.close();
    }
    else
    {
        // InitEmptyObject();
    }
}

Пожалуйста если кто-то знает почему такая ошибка возникает чаще всего или возникала у вас, прошу сообщить тоже...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 17:10     Ошибка на стадии выполнения ptr = ptr; #2
Цитата Сообщение от vbloodv Посмотреть сообщение
object_ = object; // Тут происходит ошибка
Цитата Сообщение от vbloodv Посмотреть сообщение
// много полей методов, все должны заполняться в парсере
Тут и ищите ошибку. Ясновидящих нет.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 17:45  [ТС]     Ошибка на стадии выполнения ptr = ptr; #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Тут и ищите ошибку. Ясновидящих нет.
Но если я через F10 и F11 (передвигаюсь по коду visual studio) просматриваю выполнение, программа вылетает именно в месте где указатель получает указатель на объект. В методах ничего особого не происходит...
Парсер:
Кликните здесь для просмотра всего текста
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
#include "Parser.h"
void CParser::LoadFromEcad(CObject * object, const std::wstring & path )
{
    if (IsFileExist(path))
    {
        object_ = object;
        std::ifstream file_stream( path.c_str() );
        std::string tmp;
        file_stream >> tmp;
        if ( tmp == "START" )
            while (tmp != "END")
            {
                file_stream >> tmp;
                VertexParse(file_stream,tmp);
                IndexParse(file_stream,tmp);
                DiffuseParse(file_stream,tmp);
                AmbientParse(file_stream,tmp);
            }
        file_stream.close();
        /*
        inputFile.close();
        object.CalculateNormalVector();
        //device->SetMaterial( &object.material);
        object.RotationAXis(object.pitch,object.yaw,object.roll);
        */
    }
    else
    {
        // InitEmptyObject();
    }
}
 
inline bool CParser::IsFileExist(const std::wstring & file_path)
{
    return PathFileExistsW( file_path.c_str() ) == TRUE;
}
 
void CParser::VertexParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<vertex>")
        file_stream >> tmp;
        while(tmp != "</vertex>")
        {
            float x,y,z;
            x = to_float(tmp);
            file_stream >> tmp;
            y = to_float(tmp);
            file_stream >> tmp;
            z = to_float(tmp);
            object_->vertex_database.push_back(CUSTOMVERTEX(x,y,z));
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::IndexParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<index>")
        file_stream >> tmp;
        while(tmp != "</index>")
        {
            object_->index_database.push_back(to_int(tmp));
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::DiffuseParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<diffuse_rgba>")
        file_stream >> tmp;
        while(tmp != "</diffuse_rgba>")
        {   
            object_->material.Diffuse.r = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.g = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.b = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.a = to_float(tmp);
            file_stream >> tmp;
        }
        file_stream >> tmp;
}
 
void CParser::AmbientParse( std::ifstream & file_stream, std::string & tmp )
{
    if (tmp == "<diffuse_rgba>")
        file_stream >> tmp;
        while(tmp != "</diffuse_rgba>")
        {   
            object_->material.Diffuse.r = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.g = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.b = to_float(tmp);
            file_stream >> tmp;
            object_->material.Diffuse.a = to_float(tmp);
            file_stream >> tmp;
    }
    file_stream >> tmp;
}

Объект:
Кликните здесь для просмотра всего текста
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#include "Object.h"
CObject::CObject()
{
    D3DXMatrixIdentity(&matrix_transform);
    CalculateNormalVector();
    ZeroMemory( &material, sizeof(material) );
    material.Ambient.a = material.Ambient.b = material.Ambient.g = material.Ambient.r = 1;
    material.Diffuse.a = material.Diffuse.b = material.Diffuse.g = material.Diffuse.r = 1;
    text.Initialize();
    pitch = yaw = roll = 1.f;
    b_picked = false;
}
 
void CObject::TurnOnOffText()
{
    text.TurnOnOff();
}
 
void CObject::CopyToBuffer()
{
    bool bError = false;
    if( FAILED( device->CreateVertexBuffer( vertex_database.size()*sizeof(CUSTOMVERTEX),    0 , D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &vertex_buffer, NULL ) ) ) bError = true;
    if( FAILED( device->CreateIndexBuffer(30*sizeof(index_database),0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,&index_buffer,NULL ) ) ) bError = true;
    VOID* pVertices;
    VOID* pIndex;
    if( FAILED( vertex_buffer->Lock( 0, vertex_database.size()*sizeof(CUSTOMVERTEX), (void**)&pVertices, 0 ) ) ) bError = true;
    if( FAILED( index_buffer-> Lock(0, vertex_database.size()*sizeof(USHORT),   (void**) &pIndex,0) ) ) bError = true;
    if (bError)
    {
        MessageBoxW(NULL,L"Ошибка в программе",L"Сообщение об ошибке",NULL);
        PostQuitMessage(0);
    }
    
    memcpy( pVertices, &vertex_database[0], vertex_database.size()*sizeof(CUSTOMVERTEX));
    memcpy( pIndex, &index_database[0], index_database.size()*sizeof(USHORT));
    vertex_buffer->Unlock();
    index_buffer->Unlock();
}
void CObject::Update()
{
    GetObjectCenter();
    TextDraw();
}
void CObject::Draw()
{   
    device->SetStreamSource( 0, vertex_buffer, 0, sizeof(CUSTOMVERTEX) );
    device->SetFVF(D3DFVF_CUSTOMVERTEX);
    device->SetIndices(index_buffer);
    device->SetTransform(D3DTS_WORLD,&matrix_transform);
    device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,vertex_database.size(),0,index_database.size()/3);
    text.Write();
}
 
void CObject::CalculateNormalVector()
{
    D3DXVECTOR3 u,v,n;
    D3DXVECTOR3 poli[3];
    for (unsigned int i = 0; i < index_database.size(); i+=3)
    {
        for (unsigned int j = 0;j<3;j++)
        {
            poli[j]=vertex_database.at(index_database.at(i+j)).ToVector();
        }
        u = poli[1]-poli[0];
        v = poli[2]-poli[0];
        D3DXVec3Cross(&n,&v,&u); // v * u, именно в таком порядке !
        D3DXVec3Normalize(&n,&n);
        for (unsigned int j = 0;j<3;j++)
        {
            vertex_database.at(index_database.at(i+j)).SetNormalVector(n);
        }
    }
}
 
 
void CObject::GetObjectCenter() 
{
    D3DXVECTOR3 sum(0,0,0);
    for (unsigned int i = 0; i < index_database.size(); i++)
    {
        unsigned int j = index_database.at(i);
        sum+= D3DXVECTOR3(vertex_database.at(j).x,vertex_database.at(j).y,vertex_database.at(j).z);
    }
    center = D3DXVECTOR3(sum.x/vertex_database.size(),sum.y/vertex_database.size(),sum.y/vertex_database.size());
}
 
 
 
void CObject::TextDraw() // организовать подачу через камеру
{
    GetObjectCenter();
    LONG top,bottom,right,left;
    D3DXVECTOR3 screenspace = camera->WorldToScreen(D3DXVECTOR3(center.x,center.y,0.f),&matrix_transform);
    D3DXVECTOR3 worldspace = camera->ScreenToWorld(D3DXVECTOR3(center.x,center.y,0.f),&matrix_transform);
    int coor = 140;
    top    = (LONG) screenspace.y-coor;
    bottom = (LONG) screenspace.y+coor;
    right  = (LONG) screenspace.x+coor;
    left   = (LONG) screenspace.x-coor;
    text.SetRect(top,bottom,right,left);
    text = L"rect(" + to_wstr((int)screenspace.x) + L";" + to_wstr((int)screenspace.y) + L")";
    text = L"center(" + to_cut_wstr(worldspace.x) + L";" + to_cut_wstr(worldspace.y) + L";" + to_cut_wstr(worldspace.z) + L")";
    text = L"vertices:" + to_wstr(vertex_database.size()) + L"  indexes:" + to_wstr(index_database.size());
    text = L"Pitch:" + to_cut_wstr(pitch);
    text = L"Yaw:" + to_cut_wstr(yaw);
    text = L"Roll:" + to_cut_wstr(roll);
    text = L"Picked:" + to_wstr(b_picked);
}
 
void CObject::RotationAXis(float & _x,float & _y,float _z = 0.f)
{
    const float strenght = 0.005f;
 
    yaw += _x * strenght;
    pitch += _y * strenght;
    roll += _z  * strenght;
    D3DXMatrixRotationYawPitchRoll(&matrix_transform,pitch,yaw,roll);
    b_changed = true;
}
 
void CObject::RotationAxis(D3DXVECTOR3& Axis,float angle)
{
    D3DXMatrixRotationAxis(&matrix_transform,&Axis,D3DXToRadian(angle));
    b_changed = true;
}
 
void CObject::MoveOnX(float value)
{
    D3DXMatrixTranslation(&matrix_transform,value,0.f,0.f);
    b_changed = true;
}
void CObject::MoveOnY(float value)
{
    D3DXMatrixTranslation(&matrix_transform,0.f,value,0.f);
    b_changed = true;
}
 
void CObject::MoveOnZ(float value)
{
    D3DXMatrixTranslation(&matrix_transform,0.f,0.f,value);
    b_changed = true;
}
 
void CObject::MoveOnVector(D3DXVECTOR3 &vec)
{
    D3DXMatrixTranslation(&matrix_transform,vec.x,vec.y,vec.z);
    b_changed = true;
}
 
void CObject::LoadObjectFromECAD(const std::string & szFileName)
{
    std::ifstream inputFile( szFileName.c_str() ); // Передаем имя файла из которого нужно читать
    std::string tmp;
    inputFile >> tmp;
    if (tmp == "vertex:")
    {
        inputFile >> tmp;
        while (tmp != "index:")
        {
            float x,y,z;
            x = to_float(tmp);
            inputFile >> tmp;
            y = to_float(tmp);
            inputFile >> tmp;
            z = to_float(tmp);
            vertex_database.push_back(CUSTOMVERTEX(x,y,z));
            inputFile >> tmp;
        }
    }
    if (tmp == "index:")
    {
        inputFile >> tmp;
        while (tmp != "END.")
        {
            index_database.push_back(to_int(tmp));
            inputFile >> tmp;
        }
    }
    inputFile.close();
    CalculateNormalVector();
    device->SetMaterial( &material);
    RotationAXis(pitch,yaw,roll);
};
 
void CObject::LoadMaterial(const std::string & szFileName)
{
    std::ifstream inputFile( szFileName.c_str() ); // Передаем имя файла из которого нужно читать
    std::string tmp;
    inputFile >> tmp;
    if (tmp == "DiffuseRGBA:")
    {
        inputFile >> tmp;
        material.Diffuse.r = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.g = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.b = to_float(tmp);
        inputFile >> tmp;
        material.Diffuse.a = to_float(tmp);
        inputFile >> tmp;
    }
    if (tmp == "AmbientRGBA:")
    {
        inputFile >> tmp;
        material.Ambient.r = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.g = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.b = to_float(tmp);
        inputFile >> tmp;
        material.Ambient.a = to_float(tmp);
        inputFile >> tmp;
    }
    inputFile.close();
}
 
void CObject::CheakHit(const POINT2D & ptMouseHit)
{
    D3DXVECTOR3 vecCamPos; // Первая точка в векторе это позиция камеры
    D3DXVECTOR3 vecRayEnd; // Эта точка куда стреляет камера, условно она находися в 0 позиции по оси Z, т.к. объекты с нее не уедут
    D3DXVECTOR3 vecLineDirection; // я очень надеюсь что это будет луч стреляющий в объект
    D3DXVECTOR3 vecNormal; // Нормаль для плоскости (читай полигона)
    D3DXVECTOR3 vecFromCamPosToPoly = vecCamPos; // Вектор до плоскости
    float fDistanceToPlane; // Расстояние до плоскости
 
    vecCamPos = camera->GetCameraPosition();
    vecRayEnd = camera->ScreenToWorld(D3DXVECTOR3(ptMouseHit.x,ptMouseHit.y,0.f),&matrix_transform);
    vecLineDirection = vecRayEnd - vecCamPos; // Получаем лучь стреляющий из позиции камеры в сторону которую счелкает мышь
 
    // Тут находятся нормали для каждого полигона
    for (unsigned int i = 0; i < index_database.size(); i+=3)
    {
        D3DXVECTOR3 point3dOnPoly = vertex_database.at(index_database.at(i)).ToVector();
        vecNormal = vertex_database.at(index_database.at(i)).GetNormalVector();
        vecFromCamPosToPoly = point3dOnPoly - vecCamPos;
        
                
        // for (unsigned int j = 0;j<3;j++){} //vecNormal = vertex.at(index.at(i+j)).GetNormalVector();
        
 
 
    }
    
 
}

Но их код не нужен.
1.Ошибок доступа нет, т.к. программа линкуется
2.Вызова не инициализированных значений нет, т.к. до этих полей не доходит выполнение
Ложиться все на
C++
1
 object_ = object;
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.07.2013, 18:29     Ошибка на стадии выполнения ptr = ptr; #4
Добавлено через 17 минут
Цитата Сообщение от vbloodv Посмотреть сообщение
friend Parser;
У вас такое компилируется?

Добавлено через 7 минут
Ошибка непонятна. В самом присвоении я ошибки не вижу.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12271 / 6958 / 782
Регистрация: 27.09.2012
Сообщений: 17,259
Записей в блоге: 2
Завершенные тесты: 1
25.07.2013, 20:11     Ошибка на стадии выполнения ptr = ptr; #5
Цитата Сообщение от vbloodv Посмотреть сообщение
Но если я через F10 и F11 (передвигаюсь по коду visual studio)
Режим Debug или Release?
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
25.07.2013, 22:49  [ТС]     Ошибка на стадии выполнения ptr = ptr; #6
Цитата Сообщение от Croessmah Посмотреть сообщение
Режим Debug или Release?
Debug. Попробовать через отлатчик Release версии ?
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
26.07.2013, 00:28     Ошибка на стадии выполнения ptr = ptr; #7
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 03:08  [ТС]     Ошибка на стадии выполнения ptr = ptr; #8
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас такое компилируется?
Да, более чем. (за тем лишь нюансом что перед объектом стоит объявления парсера)
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 03:25     Ошибка на стадии выполнения ptr = ptr; #9
У вас класс Parser есть и класс CParser?
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.07.2013, 10:05     Ошибка на стадии выполнения ptr = ptr; #10
Цитата Сообщение от vbloodv Посмотреть сообщение
отлатчик Release версии
что это такое?
Где-то кроме как в LoadFromEcad CObject используется?
Уберите временно поле object_ из класса и все его использования. Попробуйте запустить.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 14:55     Ошибка на стадии выполнения ptr = ptr; #11
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 15:18  [ТС]     Ошибка на стадии выполнения ptr = ptr; #12
Цитата Сообщение от alsav22 Посмотреть сообщение
vbloodv, если ещё актуально, выложите весь код, можно поискать причину.
Да, очень актуально! Весь код по этим классам или (с позволения администрации) код на весь проект на google.drive?
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 15:39     Ошибка на стадии выполнения ptr = ptr; #13
Это.
Цитата Сообщение от vbloodv Посмотреть сообщение
код на весь проект на google.drive
Добавлено через 3 минуты
И данные, которые используете, когда ошибка появляется.
SoulYangOr
0 / 0 / 0
Регистрация: 24.07.2013
Сообщений: 10
26.07.2013, 15:58     Ошибка на стадии выполнения ptr = ptr; #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
просто проследи, откуда берётся этот невалидный указатель на 0x0000004
Такое впечатление, что либо какой-то new возвратил 0
Либо ещё где-то какой-то указатель обнулён или неинициализирован...
Пройдись по программе пошагово, смотря на значения указателей на твои объекты с помощью Watch.

Поддерживаю, ошибка чтения памяти
Попробуй сначала убрать указатель в аргументах функции, если ошибка пропадет, то проблема в нем, если нет то тут что еще)
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 16:21  [ТС]     Ошибка на стадии выполнения ptr = ptr; #15
Цитата Сообщение от SoulYangOr Посмотреть сообщение
Попробуй сначала убрать указатель в аргументах функции, если ошибка пропадет, то проблема в нем, если нет то тут что еще)
если убрать object_ = object; ошибка исчезает и появляется только там где объект начинает использоваться (т.к. указатель есть, но он не идентифицирован).
Если изменить сигнатуру функции убрать указатели, в функцию передать значение, то те же ошибки только в профиль:
Кликните здесь для просмотра всего текста
Unhandled exception at 0x76f215de in ecad.exe: 0xC0000005: Access violation writing location 0x00000000.
.
Если просматривать через watch точку останова в области функции LoadFromEcad:
то object нормальный указатель(или объект с не идентифицированными полями), а object_ CXX0017:Error: symbol "object_" not found.
Проект в публичном доступе
Кликните здесь для просмотра всего текста
P.S. Все замечания по проекту (именование переменных, ошибки, плохая структура, небезопасные места) в ЛС.
ForEveR
26.07.2013, 16:33
  #16

Не по теме:

vbloodv, Я вроде под пункты не попадаю, посему спрошу тут нафига тащится весь буст + локи, если используется только booot::lexical_cast?

alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 17:07     Ошибка на стадии выполнения ptr = ptr; #17
У меня boost нет.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12271 / 6958 / 782
Регистрация: 27.09.2012
Сообщений: 17,259
Записей в блоге: 2
Завершенные тесты: 1
26.07.2013, 17:09     Ошибка на стадии выполнения ptr = ptr; #18
Цитата Сообщение от alsav22 Посмотреть сообщение
У меня boost нет.
Ну у меня как бы тоже, но есть Inc/boost в архиве с проектом )))
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 18:27     Ошибка на стадии выполнения ptr = ptr; #19
У меня проект не компилируется, пэтому проверить не смогу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 19:09     Ошибка на стадии выполнения ptr = ptr;
Еще ссылки по теме:

C++ Ошибка во время выполнения
Ошибка bad ptr при возвращении занчения из функции C++
Трудности на начальной стадии C++
C++ Стадии эволюции С++ программиста
C++ Рекурсии, ошибка выполнения

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

Или воспользуйтесь поиском по форуму:
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
26.07.2013, 19:09  [ТС]     Ошибка на стадии выполнения ptr = ptr; #20

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
vbloodv, Я вроде под пункты не попадаю, посему спрошу тут нафига тащится весь буст + локи, если используется только booot::lexical_cast?
В перспективе, раньше были shared_ptr, но я во время ошибки ptr = ptr избавился от них, фабрика на локе будет и одиночка. Я не заботился о оптимизации перед тем как выложить его в открытом...


По поводу тащить весь boost, у меня весь boost не прицеплен, я через bcp извлек только то что мне будет необходимо...
Yandex
Объявления
26.07.2013, 19:09     Ошибка на стадии выполнения ptr = ptr;
Ответ Создать тему
Опции темы

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