Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37

Операция delete вызывает ошибку Access violation at address

30.04.2014, 15:28. Показов 6668. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!

Компьютер HP omnibook xe4100, Mobile Intel Celeron 1.14ГГц, ОЗУ 480Мб
ОС Windows XP SP2.
Borland C++ Builder 6. Программист на уровне "Hello World" + хаотичный набор знаний о типах данных, функциях и указателях)

Имеется некое устройство - лазерный 2D сканер RF625 белорусской фирмы RIFTEK. Сканер подключен к компьютеру через Ethernet напрямую кабелем. Фирма прислала исходник программы на С++, а также необходимые библиотеки для работы со сканером. Данный исходник успешно компилируется в Borland C++ Builder 6, подключается к сканеру по TCP/IP, получает от сканера данные и отключается, используя функции из фирменной библиотеки. Прорамма умеет работать одновременно с несколькими сканерами в сети.
Однако в конце программы (примерно 100 строка) имеется операция delete vRF625.back(), которая поначалу вызывала ошибку (версия программы с визуальными компонентами - на форме с кнопкой)

Access violation at address 00344001 in module 'RFDEVICE.DLL'. Write of address C08CAE7C

а теперь (то же самое написал под консоль) подвешивает билдер и саму программу (процессор загружается на 70 и 30% соответственно). Пробовал компилировать на другом компьютере с Windows 7 - эффект аналогичный - зависает на операции delete vRF625.back().
Производитель ответил, что у них подобная ошибка не возникает, всё работает нормально. Но компилируют в CodeGear RAD Studio 2009 C++ Builder 2009.

Если удалить операцию delete vRF625.back(), то программа (если функцию запустить в цикле) начинает потихоньку кушать память.

Каким методом можно выявить причину возникновения ошибки и зависания? Или, может быть, кто увидит очевидную ошибку в коде? Ведь исполнить это не получится из-за отсутствия сканера )

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
/****************************************************/
/*                                                  */
/*  RF625_tcpip.cpp                                 */
/*                                                  */
/*  RFDevice sample program                         */
/*                                                  */
/*  Demonstrate how to:                             */
/*  - Search RF625 over network                     */
/*  - Connect(TCP) to the number of RF625           */
/*  - Read measurements(TCP) from number of RF625   */
/*  - Disconnect(TCP) the number of RF625           */
/*                                                  */
/****************************************************/
#include <vcl.h>
#include <iostream>
#include <vector>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
 
#define GETRESULT_ERROR_VALUE ((USHORT)0xffff)
#define MIN(a,b) (a<b ? a : b)
#define MEASURES_TO_DO 5
#define VALUES_TO_PRINT 4
 
int main (int argc, char *argv[])
{
    int nRF625;
    int i, j, k;
    vector<RFDevice::RF625Device *> vRF625;
    //  Buffer for maximal quantity of result points (X,Z * 1280 pts)
    float pPointsBuffer[RFDevice::RF625Device::ProfileValuesCount];
    USHORT nPoints;
 
    //  Initialize RFDevice
    RFDevice::Initialize();
 
    //  Create RFLanDetector object
    RFDevice::RFLanDetector ld;
 
    //  Execute search for device type 625 (RF625) for 3 seconds
    //  RF625 sends UDP information packet each 2 seconds so 3 seconds must be enough to catch all of them
    cout << "Searching..." << endl;
    nRF625 = ld.Search(625, 3);
 
    //  Now nRF625 holds a quantity of detected RF625
    cout << "Found " << nRF625 << " of RF625" << endl;
 
    //  Create list of RF625Device objects for all found devices
    for (i=0; i<nRF625; i++)
    {
        RFDevice::RF625Device *p = new RFDevice::RF625Device(ld[i]);
        if (p)
        {
            vRF625.push_back(p);
        }
        else
        {
            cout << "Failed to construct RF625Device #" << i << endl;
        }
    }
    nRF625 = vRF625.size();
 
    //  Sequentially connect to each RF625
    for (i=0; i<nRF625; i++)
    {
        if (FALSE == vRF625[i]->Connect())
        {
            cout << "Failed to Connect(TCP) to RF625Device #" << i << endl;
        }
        else
        {
            cout << "Connected(TCP) to RF625Device #" << i << endl;
        }
    }
 
    //  Get MEASURES_TO_DO measures from each RF625
    // Здесь была часть программы считывания данных и вывода их на экран.
    // Удалил для краткости. На проблему не влияет.
 
 
    //  Sequentially disconnect each RF625
    for (i=0; i<nRF625; i++)
    {
        if (FALSE == vRF625[i]->Disconnect())
        {
            cout << "Failed to Disconnect(TCP) RF625Device #" << i << endl;
        }
        else
        {
            cout << "Disconnected(TCP) RF625Device #" << i << endl;
        }
    }
 
    //  Release memory
    while (!vRF625.empty())
    {
        delete vRF625.back();   //ВЫЗЫВАЕТ ОШИБКУ И ЗАВИСАНИЕ
        vRF625.pop_back();
    }
 
    //    Cleanup RFDevice
    RFDevice::Cleanup();
 
    return 0;
}
Для справки о vector
http://www.cplusplus.com/reference/vector/vector/

vector::back
http://www.cplusplus.com/reference/vector/vector/back/

vector::pop_back
http://www.cplusplus.com/reference/vector/vector/pop_back/
Миниатюры
Операция delete вызывает ошибку Access violation at address  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2014, 15:28
Ответы с готовыми решениями:

Помогите устранить ошибку: Access violation at address
for(int k = 0; k &lt; 10; k++) { for(int l = 0; l &lt; 30; l++) ...

Ошибка access violation at address in module borlndmm.dll write of address
Всем здравствуйте. Не могу побороть ошибку &quot;access violation at address in module borlndmm.dll write of address &quot;. Попробую объяснить....

Access violation at address 00404083 in module 'Projectl.exe'. Read of address 00000000.
Кинул на форму PasswordDlg, в главной форме вверху вписал #include &quot;PassWord.h&quot; и на формкриэйт главной формы вписал...

39
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
21.05.2014, 12:53
Студворк — интернет-сервис помощи студентам
npp, я ж уже писал...
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
#include <vcl.h>
#include <iostream>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
int main (int argc, char *argv[])
{
        int nRF625;
 
        //  Create RFLanDetector object
        RFDevice::RFLanDetector ld;
 
        //  Initialize RFDevice
        RFDevice::Initialize();
 
metka: 
        // Поиск сканеров
        //cout << "Searching..." << endl;
        nRF625 = ld.Search(625, 3);
 
        if (nRF625 < 1) cout << "No found scanners" << endl;
        else
        {
                RFDevice::RF625Device scanner( ld[0] );
                if (scanner.Connect() == false )
                {
                        cout << "Failed to Connect(TCP) to scanner" << endl;
                }
                else // иначе, если соединение установлено
                {
                        if ( scanner.Disconnect() == false )
                        {
                                cout << "Failed to Disconnect(TCP) scanner" << endl;
                        }
                }
        }
        
        goto metka;
        //    Cleanup RFDevice
        RFDevice::Cleanup();
 
        return 0;
}
1
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
22.10.2014, 15:02  [ТС]
easter, добрый день! Возвращаюсь к теме. Попробовал скомпилировать свой проект с Вашей библиотекой Project1.dll, созданной в C++Builder - операция delete vRF625.back по-прежнему во время исполнения вызывает ошибку Access Violation at address 001E3FDE... Причём Ваш Project1.exe работает без ошибок.

Ранее переустановил Windows7, установил CodeGear C++ Builder 2007 Lite, установил любимый C++Builder 6.

Кое-что обнаружил. Создал с нуля и скомпилировал программу в CodeGear C++, заработала без ошибок. В настройках проекта в разделе Linking установил галочку Dynamic RTL, ошибка на операции delete vRF625.back вновь появилась. Убираю галочку, программа отрабатывает без ошибки. Перебрал все галочки по одной в настройках - на ошибку влияет только Dynamic RTL.

В C++Builder такой фокус не прошёл - ошибка есть независимо от галки Use dynamic RTL. И независимо от режимов Debug/Release.
Миниатюры
Операция delete вызывает ошибку Access violation at address   Операция delete вызывает ошибку Access violation at address  
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.10.2014, 15:28
Цитата Сообщение от easter Посмотреть сообщение
Добрый день. Я разработчик той самой библиотеки.
В общем, нашел я установил Borland C++ 6.0 и скомпилировал в нем библиотеку. Правда, не разобрался как поменять имя целевого файла, так что либка получилась с названием Project1
Позапускал в релизе и дебаге, все работает как надо.
Если выкладываете то выкладывайте весь проект с потрахами, что бы все могли проверить.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
23.10.2014, 16:41  [ТС]
c0rvax, Попробовал Ваш код в C++Builder, который в сообщении #21, работает без ошибок, коннект со сканером, дисконнект происходит успешно, но кушает память. За 480 циклов (по 3 секунды) занимаемая программой память возросла с 760 кБ до 888 кБ скачками по 4 кБ.

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
#include <vcl.h>
#include <iostream>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
int main (int argc, char *argv[])
{
        int nRF625;
        int counter = 0;
        //  Create RFLanDetector object
        RFDevice::RFLanDetector ld;
 
        //  Initialize RFDevice
        RFDevice::Initialize();
 
metka:
        // Поиск сканеров
        //cout << "Searching..." << endl;
        nRF625 = ld.Search(625, 3);
 
        if (nRF625 < 1) cout << "No found scanners" << endl;
        else
        {
                RFDevice::RF625Device scanner( ld[0] );
                if (scanner.Connect() == false )
                {
                        cout << "Failed to Connect(TCP) to scanner" << endl;
                }
                else // иначе, если соединение установлено
                {
                        if ( scanner.Disconnect() == false )
                        {
                                cout << "Failed to Disconnect(TCP) scanner" << endl;
                        }
                }
        }
        counter = counter + 1;
        cout << counter << " ";
goto metka;
 
        //    Cleanup RFDevice
        RFDevice::Cleanup();
 
        return 0;
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.10.2014, 17:03
Цитата Сообщение от npp Посмотреть сообщение
но кушает память
На то она и программа что бы кушать, вопрос в том будет ли нехватка памяти, есть ли реальная утечка.
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
23.10.2014, 20:05
npp, на самом деле, это твой код :-) Я лишь заменил динамическое выделение памяти на статическое. Есть мнение, что если внести Initialize и CleanUp внутрь цикла, то память кушаться не будет. В любом случае, это лучше, чем Access Violation... И как ни крути, это косяк разработчиков.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
24.10.2014, 10:23  [ТС]
Avazart, утечка недопустима, посмотрите мой пост #17 (последний абзац).
c0rvax, утечка есть во всех трёх вариантах зацикливания программы.


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
#include <vcl.h>
#include <iostream>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
int main (int argc, char *argv[])
{
        int nRF625;
        int counter = 0;
metka:
        //  Create RFLanDetector object
        RFDevice::RFLanDetector ld;
//metka:
        //  Initialize RFDevice
        RFDevice::Initialize();
//metka:
        // Ïîèñê ñêàíåðîâ
        //cout << "Searching..." << endl;
        nRF625 = ld.Search(625, 3);
 
        if (nRF625 < 1) cout << "No found scanners" << endl;
        else
        {
                RFDevice::RF625Device scanner( ld[0] );
                if (scanner.Connect() == false )
                {
                        cout << "Failed to Connect(TCP) to scanner" << endl;
                }
                else // èíà÷å, åñëè ñîåäèíåíèå óñòàíîâëåíî
                {
                        if ( scanner.Disconnect() == false )
                        {
                                cout << "Failed to Disconnect(TCP) scanner" << endl;
                        }
                }
        }
        counter = counter + 1;
        cout << counter << " ";
//goto metka;
 
        //    Cleanup RFDevice
        RFDevice::Cleanup();
goto metka;
        return 0;
}
P.S.Параллельно эта задача решилась другим коллегой-программистом на Delphi с соответствующими библиотеками от ф.Riftek. Ни ошибок, ни жора памяти нет. Везёт же... Всё равно мне нужен свой вариант на С++ для последующей работы со сканерами. Напомню ещё раз разработчику easter об этой теме.
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
24.10.2014, 11:24
npp, тогда такой вариант. Предлагаю вынести весь код в отдельную функцию и вызывать её в цикле из main, а в самой функции цикл не делать, естественно.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.10.2014, 12:32
Цитата Сообщение от npp Посмотреть сообщение
программистом на Delphi с соответствующими библиотеками от ф.Riftek.
Так в чем проблема, подключайте эту библиотеку и используйте в плюсах.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
30.10.2014, 12:42  [ТС]
c0rvax, попробовал, жрёт память всё равно. Если сканер в сети есть, то жрёт. Если нету - не жрёт.
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
#include <vcl.h>
#include <iostream>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
void MyFunc(void);
 
int main (int argc, char *argv[])
{
  metka:
        MyFunc();
  goto metka;
        return 0;
}
 
//------------------------------------------------------------------------------
void MyFunc (void)
{
        int nRF625;
        //  Create RFLanDetector object
        RFDevice::RFLanDetector ld;
 
        //  Initialize RFDevice
        RFDevice::Initialize();
 
        // Ïîèñê ñêàíåðîâ
        //cout << "Searching..." << endl;
        nRF625 = ld.Search(625, 3);
 
        if (nRF625 < 1) cout << "No found scanners" << endl;
        else
        {
                RFDevice::RF625Device scanner( ld[0] );
                if (scanner.Connect() == false )
                {
                        cout << "Failed to Connect(TCP) to scanner" << endl;
                }
                else // èíà÷å, åñëè ñîåäèíåíèå óñòàíîâëåíî
                {
                        if ( scanner.Disconnect() == false )
                        {
                                cout << "Failed to Disconnect(TCP) scanner" << endl;
                        }
                }
        }
 
        //    Cleanup RFDevice
        RFDevice::Cleanup();
}
Добавлено через 11 минут
Avazart, пробовал. Самые первые их библиотеки не подошли, т.к. были скомпилированы для Visual C. Это я выяснил в Интернете, на правильность вывода не претендую.
Линковщик выдавал ошибку
[Linker error]`…RFDevice.lib contains invalid OMF record, type 0x21 (possibly COFF)

Попытка конвертирования библиотеки с помощью утилиты coff2omf.exe от Borland результата не принесла (получается файл нулевого размера).

По моей просьбе производитель скомпилировал библиотеку для C++Builder, которая заработала, но описанными в шапке темы проблемами.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.11.2014, 11:45
Цитата Сообщение от npp Посмотреть сообщение
Avazart, пробовал. Самые первые их библиотеки не подошли, т.к. были скомпилированы для Visual C. Это я выяснил в Интернете, на правильность вывода не претендую.
Ну так Visual C или Delphi определитесь?
Во вторых есть еще implib/imfdef для конвертирования библиотеки и если и таким способом не получается то можно подгружать dll явно.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
12.12.2014, 08:34  [ТС]
Avazart, предыстория такова: купили лазерный сканер RF625 ф. Riftek, я скачал библиотеки с их сайта, подключил их, попробовал скомпилировать в С++, линковщик выдал ошибку

[Linker error]`…RFDevice.lib contains invalid OMF record, type 0x21 (possibly COFF)

в Инете нашёл, что эта ошибка из-за того, что библиотека написана не для С++ (а для Visual C) и её надо конвертировать для С++.
Тогда Riftek прислал библиотеку для С++, которая заработала, но с ошибкой, озвученной в топике.

Параллельно программированием сканера занялся программист на Delphi, не знаю какую он там скачал с сайта, но у него библиотека нормально заработала, память не кушает.
Мне нужно такую же программу написать на С++, чем я и занимаюсь, когда настроение есть.

P.S. До этого я писал аналогичную программу, но для старых версий сканера RF620, которые в данный момент успешно работают в производстве. Библиотеки там были конечно другие.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.12.2014, 09:42
Цитата Сообщение от npp Посмотреть сообщение
Кое-что обнаружил. Создал с нуля и скомпилировал программу в CodeGear C++, заработала без ошибок. В настройках проекта в разделе Linking установил галочку Dynamic RTL, ошибка на операции delete vRF625.back вновь появилась. Убираю галочку, программа отрабатывает без ошибки. Перебрал все галочки по одной в настройках - на ошибку влияет только Dynamic RTL.
У приложения и dll разные рантаймы. Приложение не может корректно создать объект,

Добавлено через 11 минут
На чем основана уверенность разработчика в том, что класс, экспортированный из dll собранной одним компилятором, будет корректно работать в приложении, собранном другим мне лично пока абсолютно не понятна.
Пишите обертку - dll на CodeGear с plain С интерфейсом, в ней создавайте/уничтожайте объект и транслируйте plain С вызовы в вызовы методов класса. Так изначально выглядит SDK большинства адекватных производителей.
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
12.12.2014, 10:05
Цитата Сообщение от npp Посмотреть сообщение
delete vRF625.back();
Какая то странная операция удаление, если имеется delete, то до него должен быть и new
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.12.2014, 13:06
demmax2004,
C++
1
RFDevice::RF625Device *p = new RFDevice::RF625Device(ld[i]);
Добавлено через 1 минуту
Цитата Сообщение от npp Посмотреть сообщение
Linker error]`…RFDevice.lib contains invalid OMF record, type 0x21 (possibly COFF)
DLL в C++Builder и Microsoft Visual C++
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.12.2014, 13:30
Цитата Сообщение от Avazart Посмотреть сообщение
DLL в C++Builder и Microsoft Visual C++
библиотеку импорта проще сгенерить:

implib -a libname.lib libname.dll

coff2omf - более для статических
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.12.2014, 13:38
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
coff2omf - более для статических
Cтатические не конвертся вообще, а для implib иногда нужно ключи подбирать что правильно сконвертило.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.12.2014, 13:45
Цитата Сообщение от Avazart Посмотреть сообщение
Cтатические не конвертся вообще
А, да, сорри, прогнал.
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
03.06.2015, 12:27  [ТС]
Здравствуйте! Чёрт с ним, с жором памяти, теперь другая проблема:

В строке 43 имеется вызов функции получения данных со сканера scanner.GetResult(&lpBuffer);. Если закомментировать её, то программа компилируется, запускается и отрабатывает нормально. Если раскомментировать её, то при нажатии в C++Builder 6 кнопки RUN на мгновение появляется окно консоли и сразу исчезает, программа не отрабатывает (в конце есть пауза Sleep(2000), я бы заметил результат работы программы.

Если нажать Compile или Build, то компилирование происходит успешно с соответствующим сообщением ОК, скомпилированным количество строк и т.д.

Если внести в программу ошибку, то компилятор видит её.
Ещё заметил, что компилятор перестал предупреждать об неиспользуемых переменных в программе. Хотя вчера предупреждения были. Вносил в программу лишние переменные - Builder`у пофиг.

Что с этой функцией может быть не так? Почему программа не отрабатывает даже команды, которые находятся выше вызова этой функции? Ставил в качестве индикаторов cout и Sleep(2000) в main`e и в теле функции - не отрабатывают. Консоль просто сразу закрывается.

На фото результат успешного выполнения программы с закомментированной строкой scanner.GetResult(&lpBuffer);
Во вложении описание классов библиотек от ф. Riftek/

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
#include <vcl.h>
#include <iostream>
#include <RF625Device.h>
#include <RFLanDetector.h>
#pragma comment (lib,"RFDevice.lib")
 
using namespace std;
void MyFunc(void);
int main (int argc, char *argv[])
{
        MyFunc();
        return 0;
}
 
//------------------------------------------------------------------------------
void MyFunc (void)
{
        int nRF625;
        unsigned char lpBuffer[4000];
        
        //  Create RFLanDetector object
        RFDevice::RFLanDetector ld;
 
        //  Initialize RFDevice
        RFDevice::Initialize();
 
        //  Поиск сканеров RF625 в сети в течение 2 секунд
        nRF625 = ld.Search(625, 2);
 
        if (nRF625 < 1) cout << "No found scanners" << endl;
        else
        {
                //  Коннектимся к сканеру
                RFDevice::RF625Device scanner( ld[0] );
                if (scanner.Connect() == false) cout << "Failed to Connect to scanner" << endl;
                else
                {
                        cout << "Connect OK (TCP)" << endl;
                        //  Получаем серийный номер
                        cout << scanner.GetSerialNumber() << endl;
 
                        //  Получаем результат сканирования поверхности (координаты точек + служебные данные)
                        scanner.GetResult(&lpBuffer);
 
                        //  Disconnect
                        if (scanner.Disconnect() == false) cout << "Failed to Disconnect scanner" << endl;
                        else
                        {
                                cout << "Disconnect OK" << endl;
                        }
                }
        }
 
        //   Cleanup RFDevice
        RFDevice::Cleanup();
        Sleep(2000);
}
Миниатюры
Операция delete вызывает ошибку Access violation at address  
Вложения
Тип файла: zip Reference.zip (368.0 Кб, 2 просмотров)
0
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
08.06.2015, 11:06  [ТС]
Вопрос снимаю, использовал другую похожую функцию GetNormalizedResult, которая не зависает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2015, 11:06

Access violation at address 004A9FE5 in module 'Project1.exe'. Read of address 0003FFFC
Здравствуйте, помогите устранить ошибку, Access violation at address 004A9FE5 in module 'Project1.exe'. Read of address 0003FFFC. Вот...

Access violation at address 32ABE860 in module cc32100mt.dll. read of address f8338338
кто знает эту ошибку. При сохранении stringgrid в файл выдается критическая ошибка Access volidation at address 32ABE860 in module...

Access violation at address 501F084A in module vcl120.bpl. Read of address 00000374
Привет всем! Который день не могу продолжить работу с программой из-за такой ошибки: 'Access violation at address 501F084A in module...

Ошибка Access violation at address XXXXXXX in module 'vcl240.bpl'. Read of address XXXXXX
Доброго времени суток. Проблема следующая: при определенной последовательности действий в приложении вылетает ошибка, работа приложения...

access violation at address 40009720 in module 'rtl60.bpl'. read of address
Где может быть проблема?String alphabet1=Edit1-&gt;Text,command,way,answer=&quot;&quot;; char *alpha1=alphabet1.c_str(); int...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru