Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 31

Приложение съедает память

20.05.2015, 23:45. Показов 1015. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане.
После запуска приложения, при каждом клике съедается 300кб.
Не пойму за счет чего идет утечка памяти. Посмотрите и подскажите, пожалуйста, на что следует обратить внимание.

код кнопки:

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
case ID_BUTTON_PROV_INN:
            {
                switch(HIWORD(wParam))
                {
                    case BN_CLICKED:
                    
                    {
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK1),LB_RESETCONTENT,0,0);
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK2),LB_RESETCONTENT,0,0);
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_NUMBER),LB_RESETCONTENT,0,0);
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_DATA),LB_RESETCONTENT,0,0);
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_RESULT),LB_RESETCONTENT,0,0);
                        SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_ZAYAVKA),LB_RESETCONTENT,0,0);
                                                
                        char *inn = new char[21];                                                                
                        SQLCHAR sqlText_prov_inn[]="SELECT cod_reg, kod_city, inn_to, name_to, date_obraz, cod_net_work, kol_tt, bank_konk, internet_sales, site_inter_sales, komm_to, cod_uk, cod_sotr_sb, date_rez, cod_rez, post_otp  FROM reestr_to  WHERE inn_to = ?  ORDER BY 1;";
                        
                        SQLHSTMT    hstmt_prov_inn      = SQL_NULL_HSTMT;                     
                        GetWindowText(hwnd_edit_inn_TO,inn,21);
                        SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hstmt_prov_inn); //âåðñèÿ ODBC 3.0
                        for(int x=0;inn[x]!='\0'||x<=20;++x){if(inn[x]=='0'||inn[x]=='1'||inn[x]=='2'||inn[x]=='3'||inn[x]=='4'||inn[x]=='5'||inn[x]=='6'||inn[x]=='7'||inn[x]=='8'||inn[x]=='9'||inn[x]=='\0') {;} else {inn[x]='\0';}}  
                        SQLSetStmtAttr(hstmt_prov_inn, SQL_ATTR_CURSOR_SCROLLABLE ,(SQLPOINTER) SQL_NONSCROLLABLE , 0);
                        SQLSetStmtAttr(hstmt_prov_inn, SQL_ATTR_CURSOR_SENSITIVITY,(SQLPOINTER) SQL_INSENSITIVE , 0);
                        SQLINTEGER sql_nts = SQL_NTS;
                        retcode =SQLPrepare (hstmt_prov_inn,sqlText_prov_inn , SQL_NTS);
                            retcode=SQLBindParameter(
                            hstmt_prov_inn,     
                            1,                  
                            SQL_PARAM_INPUT,     
                            SQL_C_CHAR,         
                            SQL_CHAR,           
                            20,                
                            0,                 
                            inn,                  
                            sizeof(inn),         
                            &sql_nts        
                            );
                        
                        /*SQLDescribeCol(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);   
                       SQLCHAR c[40]; SQLSMALLINT tr,tt,u6,u7; SQLUINTEGER io;
                       SQLDescribeCol(hstmt_prov_inn,3,c,sizeof(c),&tr,&tt,&io,&u6,&u7);*/
                       //MessageBox(NULL,(LPCSTR)d,"",MB_OK);
                       if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                        {     
                            //retcode = SQLExecDirect(hstmt_prov_inn,sqlText_prov_inn, SQL_NTS);
                            retcode =SQLExecute (hstmt_prov_inn);
                            DiagnosHSTMT(retcode, hstmt_prov_inn); //ïîèñê îøèáîê
                            while (TRUE) {
                                                retcode = SQLFetch(hstmt_prov_inn);
                                            
                                                if (retcode == SQL_NO_DATA) {
                                                        MessageBox(hwnd,"ÒÎ â áàçå äàííûõ íå íàéäåíà.","Ïðîâåðêà ÈÍÍ",MB_OK);
                                                }
                                                if (retcode == SQL_ERROR) {
                                                        MessageBox(hwnd,"Îøèáêà ïðè ïðîäâèæåíèè êóðñîðà íà ñëåäóþùóþ çàïèñü ðåçóëüòèðóþùåãî íàáîðà.","Error SQLFetch",MB_OK);
                                                }
                                                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
                                                    MessageBox(hwnd,"ÒÎ íàéäåíà â áàçå", "Ïðîâåðêà ÈÍÍ", MB_OK);
                                                    
                                                 {
                                                    char    *a1=new char[5];         //cod_reg
                                                            char    *a2=new char[5];         //kod_city
                                                            char    *a3=new char[13];         //inn_to, 
                                                            char    *a4=new char[180];         //name_to, 
                                                            char    *a5=new char[20];         //date_obraz, 
                                                            char    *a6=new char[5];         //cod_net_work, 
                                                            char    *a7=new char[4];          //kol_tt, 
                                                            char    *a8=new char[40];         //bank_konk, 
                                                            char    *a9=new char[5];         //internet_sales, 
                                                            char    *a10=new char[40];        //site_inter_sales,  
                                                            char    *a11=new char[65535];     //komm_to,    
                                                            char    *a12=new char[120];        //cod_uk, 
                                                            char    *a13=new char[5];        //cod_sotr_sb, 
                                                            char    *a14=new char[20];        //date_rez, 
                                                            char    *a15=new char[20];        //cod_rez,    
                                                            char    *a16=new char[40];        //post_otp
                                                   
                                                                a1[0]='\0';    //cod_reg
                                                                a2[0]='\0';         //kod_city
                                                                a3[0]='\0';         //inn_to, 
                                                                a4[0]='\0';         //name_to, 
                                                                a5[0]='\0';         //date_obraz, 
                                                                a6[0]='\0';         //cod_net_work, 
                                                                a7[0]='\0';          //kol_tt, 
                                                                a8[0]='\0';         //bank_konk, 
                                                                a9[0]='\0';         //internet_sales, 
                                                                a10[0]='\0';        //site_inter_sales,  
                                                                a11[0]='\0';     //komm_to,    
                                                                a12[0]='\0';        //cod_uk, 
                                                                a13[0]='\0';        //cod_sotr_sb, 
                                                                a14[0]='\0';        //date_rez, 
                                                                a15[0]='\0';        //cod_rez,    
                                                                a16[0]='\0';        //post_otp
                                                    
                                                    
                                                    
                                                    SQLGetData(hstmt_prov_inn, 1, SQL_C_CHAR, a1, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 2, SQL_C_CHAR, a2, 5, &int_hstmt1);    
                                                    SQLGetData(hstmt_prov_inn, 3, SQL_C_CHAR, a3, 13, &int_hstmt1);     
                                                    SQLGetData(hstmt_prov_inn, 4, SQL_C_CHAR, a4, 180, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 5, SQL_C_CHAR, a5, 20, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 6, SQL_C_CHAR, a6, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 7, SQL_C_CHAR, a7, 4, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 8, SQL_C_CHAR, a8, 40, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 9, SQL_C_CHAR, a9, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 10, SQL_C_CHAR, a10, 40, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 11, SQL_C_CHAR, a11, 65535, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 12, SQL_C_CHAR, a12, 120, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 13, SQL_C_CHAR, a13, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 14, SQL_C_CHAR, a14, 20, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 15, SQL_C_CHAR, a15, 20, &int_hstmt1);
                                                    SQLGetData(hstmt_prov_inn, 16, SQL_C_CHAR, a16, 40, &int_hstmt1);
                
                                                    load_from_bd_to_form (a1, a2, a3, a4, a5, a6, a7, a8,
                                                    a9, a10, a11, a12, a13, a14, a15, a16); 
                                                    
                                                    delete[] a1;    //cod_reg
                                                            delete[]    a2;         //kod_city
                                                               delete[] a3;         //inn_to, 
                                                               delete[] a4;         //name_to, 
                                                               delete[] a5;         //date_obraz, 
                                                               delete[] a6;         //cod_net_work, 
                                                               delete[] a7;          //kol_tt, 
                                                               delete[] a8;         //bank_konk, 
                                                               delete[] a9;         //internet_sales, 
                                                               delete[] a10;        //site_inter_sales,  
                                                               delete[] a11;     //komm_to,    
                                                               delete[] a12;        //cod_uk, 
                                                               delete[] a13;        //cod_sotr_sb, 
                                                               delete[] a14;        //date_rez, 
                                                               delete[] a15;        //cod_rez,    
                                                               delete[] a16; 
                                                               
                                                } break;
                                                } else {break;}
                                        }
                            
                            
                            }
                        SQLFreeHandle(SQL_HANDLE_STMT,hstmt_prov_inn);
                        hstmt_prov_inn = SQL_NULL_HSTMT;
                        sqlText_prov_inn[0]='\0';
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2015, 23:45
Ответы с готовыми решениями:

Приложение за час съедает виртуальную память. Оптимизация, поиск эффективных алгоритмов
Добрый день! Приложение берет URL с массива, и с помощью WebKitBrowser (либо WebBrowser) открывает их, проблема в том, что через час...

Обращение к БД съедает память
Добрый день. Имею самописный код программы, который как выяснилось, при каждой итерации по таймеру увеличивает объем занимаемой...

Lotus съедает память
Добрый день. Сервер lotus 5.0.8 Запуск в виде службы windows 2003 (E sp1) В течение времени происходит увеличение размера занимаемой...

6
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 31
20.05.2015, 23:45  [ТС]
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
/////////çàïðàøèâàåì â ÁÄ ñïèñîê ðåàëèçóåìîé ïðîäóêöèè
                            
                            SQLCHAR sqlText_product_spisok[]="SELECT cod_asMain, cod_asSubordinate FROM ðååñòðÀññîðòèìåíòÒÎ WHERE INN = ?  ORDER BY 1;";
                            SQLHSTMT    hstmt_product_spisok    = SQL_NULL_HSTMT;
                            SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hstmt_product_spisok); //âåðñèÿ ODBC 3.0
                            
                            retcode =SQLPrepare (hstmt_product_spisok,sqlText_product_spisok , SQL_NTS);
                            retcode=SQLBindParameter(
                                hstmt_product_spisok,     
                                1,                  
                                SQL_PARAM_INPUT,    
                                SQL_C_CHAR,         
                                SQL_CHAR,           
                                20,                 
                                0,                  
                                inn,                  
                                sizeof(inn),          
                                &sql_nts       
                                );
                            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                            {    
                            retcode =SQLExecute (hstmt_product_spisok);
                            DiagnosHSTMT(retcode, hstmt_product_spisok); //ïîèñê îøèáîê
                            while (TRUE) {
                                                retcode = SQLFetch(hstmt_product_spisok);
                                            
                                                if (retcode == SQL_NO_DATA) {break;}
                                                if (retcode == SQL_ERROR) {MessageBox(hwnd_TO,"Îøèáêà ïðè âûïîëíåíèè çàïðîñà sqlText_product_spisok.","Error SQLFetch",MB_OK);break;}
                                                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
                                                    char    *a1= new char[20];         //cod_reg
                                                    char    *a2= new char[5];         //kod_city
                                                    a1[0]='\0';    //cod_reg
                                                    a2[0]='\0';         //kod_city
                                                                
                                                    SQLGetData(hstmt_product_spisok, 1, SQL_C_CHAR, a1, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_product_spisok, 2, SQL_C_CHAR, a2, 5, &int_hstmt1);
                                                    HWND hwnd_spisok1 = GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK1);
                                                    HWND hwnd_spisok2 = GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK2);
                                                  
                                                    for(std::map<std::string,std::string>::iterator it = prodGroup.begin(); it!=prodGroup.end(); ++it)
                                                    {
                                                        if(atoi((*it).first.data())==atoi(a1)) 
                                                        {
                                                            std::string group__;
                                                            transform((*it).second.begin(), (*it).second.end(), group__.begin(), toupper);
                                                            group__[(*it).second.size()]='\0';
                                                            SendMessage(hwnd_spisok1,LB_ADDSTRING,0,(LPARAM)(LPCSTR)group__.data());
                                                            break;
                                                        }
                                                    }
                                                    for(std::multimap<std::string,pairString>::iterator it = prodName.begin(); it!=prodName.end(); ++it)
                                                    {
                                                        if(atoi((*it).second.first.data())==atoi(a2)) 
                                                        {
                                                            std::string name_product__;
                                                            transform((*it).second.second.begin(), (*it).second.second.end(), name_product__.begin(), toupper);
                                                            name_product__[(*it).second.second.size()]='\0';
                                                            SendMessage(hwnd_spisok2,LB_ADDSTRING,0,(LPARAM)(LPCSTR)name_product__.data());
                                                            break;
                                                        }
                                                    }
                                                
                                                delete[] a1;                                       
                                                delete[] a2;
                                                }
                                            }
                            }
                            SQLFreeHandle(SQL_HANDLE_STMT,hstmt_product_spisok);
                            hstmt_product_spisok = SQL_NULL_HSTMT;
                            
//////Çàïðàøèâàåì â ÁÄ èíôîðìàöèþ î ïåðåñìîòðå ðåøåíèÿ
                            
                            SQLCHAR sqlText_peresmotr[]="SELECT dateOpen, idResult, secondApplication, commPeresmotr FROM peresmotr WHERE IdOdjectVerefication=2 AND inn_to = ? ORDER BY 1;";
                            SQLHSTMT    hstmt_peresmotr    = SQL_NULL_HSTMT;
                            SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hstmt_peresmotr); //âåðñèÿ ODBC 3.0
                            
                            retcode =SQLPrepare (hstmt_peresmotr,sqlText_peresmotr , SQL_NTS);
                            retcode=SQLBindParameter(
                                hstmt_peresmotr,     
                                1,                  
                                SQL_PARAM_INPUT,    
                                SQL_C_CHAR,         
                                SQL_CHAR,           
                                20,               
                                0,                
                                inn,                  
                                sizeof(inn),         
                                &sql_nts         
                                );
                            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                            {    
                            retcode =SQLExecute (hstmt_peresmotr);
                            DiagnosHSTMT(retcode, hstmt_peresmotr); //ïîèñê îøèáîê
                            int xNumberPeresmotr=1;
                            while (TRUE) {
                                                retcode = SQLFetch(hstmt_peresmotr);
                                            
                                                if (retcode == SQL_NO_DATA) {break;}
                                                if (retcode == SQL_ERROR) {MessageBox(hwnd_TO,"Îøèáêà ïðè âûïîëíåíèè çàïðîñà sqlText_product_spisok.","Error SQLFetch",MB_OK);break;}
                                                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                                                {
                                                    char    *a1= new char[20];         //dateOpen
                                                    char    *a2= new char[20];         //idResult
                                                    char    *a3= new char[5];         //secondApplication
                                                    char    *a4= new char[65535];         //commPeresmotr
                                                                a1[0]='\0';    //cod_reg
                                                                a2[0]='\0';         //kod_city
                                                                a3[0]='\0';         //inn_to, 
                                                                a4[0]='\0';   
                                                    
                                                    SQLGetData(hstmt_peresmotr, 1, SQL_C_CHAR, a1, 20, &int_hstmt1);
                                                    SQLGetData(hstmt_peresmotr, 2, SQL_C_CHAR, a2, 20, &int_hstmt1);
                                                    SQLGetData(hstmt_peresmotr, 3, SQL_C_CHAR, a3, 5, &int_hstmt1);
                                                    SQLGetData(hstmt_peresmotr, 4, SQL_C_CHAR, a4, 65535, &int_hstmt1);
                                                    HWND hwnd_spisok_number = GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_NUMBER);
                                                    HWND hwnd_spisok_data = GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_DATA);
                                                    HWND hwnd_spisok_result = GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_RESULT);
                                                    HWND hwnd_spisok_zayavka = GetDlgItem(hwnd_TO,ID_LIST_PERESMOTR_ZAYAVKA);
                                                    char b[5]; itoa(xNumberPeresmotr,b,10);
                                                    SendMessage(hwnd_spisok_number,LB_ADDSTRING,0,(LPARAM)(LPCSTR)b);
                                                    ++xNumberPeresmotr;
                                                    formatDataAccess(a1);
                                                    SendMessage(hwnd_spisok_data,LB_ADDSTRING,0,(LPARAM)(LPCSTR)a1);
                                                    for(std::map<std::string,std::string>::iterator it = rezProv.begin(); it!=rezProv.end(); ++it)
                                                    {
                                                        if(atoi((*it).first.data())==atoi(a2)) 
                                                        {
                                                            SendMessage(hwnd_spisok_result,LB_ADDSTRING,0,(LPARAM)(LPCSTR)(*it).second.data());
                                                        }
                                                    } 
                                                    short YES=0,NO=1; 
                                                    if (NO==atoi(a3)) 
                                                    {
                                                        SendMessage(hwnd_spisok_zayavka,LB_ADDSTRING,0,(LPARAM)(LPCSTR)"ÄÀ"); 
                                                    }
                                                    if (YES==atoi(a3)) 
                                                    {
                                                        SendMessage(hwnd_spisok_zayavka,LB_ADDSTRING,0,(LPARAM)(LPCSTR)"ÍÅÒ");  
                                                    }
                                                
                                                delete[] a1;
                                                delete[] a2;
                                                delete[] a3;
                                                delete[] a4;
                                                }
                                            }
                            }
                            delete[] inn;
          
                    break;
                    }
                    default: break;
                }
            break;
            }
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
21.05.2015, 00:42
АлексейФокс, первое что бросается в глаза - очень подозрительный sizeof(inn). что есть inn? подозреваю что это указатель. скорее всего имеется ввиду размер буфера.
Но думаю, это не связано с утечкой памяти.
0
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 31
21.05.2015, 09:44  [ТС]
schdub, спасибо за замечание!
Проблема,скорее всего, из-за другого.

Во вложении код проги целиком.
Вложения
Тип файла: 7z ИсходныйКод.7z (16.9 Кб, 3 просмотров)
0
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 31
21.05.2015, 11:15  [ТС]
Заметил, что съедается по 100кб при перемещении/движении окна по экрану.

Добавлено через 1 час 29 минут
В функции окна была объявлена переменная
C++
1
char *buffer = (char*)malloc(100*sizeof(char)); //выделяем блок памяти размером 100*sizeof(char)
При тестировании заметил, что эта хреновина сжирала по 100кб при движении окна по экрану.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
21.05.2015, 13:22
АлексейФокс, т.е. нашли утечку и она оказалась не в том коде, что думали раньше?

Добавлено через 4 минуты
А вообще пользоваться динамической памятью, когда есть std::vector<T>, std::array<T>, std::string, например, имхо не разумно.
1
2 / 2 / 1
Регистрация: 14.05.2015
Сообщений: 31
21.05.2015, 16:16  [ТС]
schdub, да, ошибку нашел.
В коде имеется ряд дескрипторов операторов. И при освобождении ресурсов, ассоциированных с указанными дескрипторами, 1шт пропустил.

Спасибо за замечание относительно дин.памяти. Код программы постоянно переписываю. Забыл убрать маллок. Вот и вышла неприятность. Стараюсь активно использовать STL

Теперь возникла другая проблема.
В программе есть два ассоциативных контейнера (map и multimap), в которые пишутся данные из источника данных (справочники).

Так вот при поиске в справочнике (т.е. происходит сравнение данных в переменной и в отображении) программа рушится. Уважаемые форумчане укажите дураку на ошибку))
Проблема где-то в этой части:
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
std::map<std::string,std::string> prodGroup; //справочники
typedef std::pair<std::string,std::string> pairString; //пара: ключ - наименование товара
std::multimap<std::string,pairString> prodName; //справочник по наименованиям товара с повторяющимися ключами
 
 
char    a1[5];  a1[0]='\0';
 
for(std::map<std::string,std::string>::iterator it = prodGroup.begin(); it!=prodGroup.end(); ++it)
                                                    {
                                                        if(atoi((*it).first.data())==atoi(a1)) 
                                                        {
                                                            std::string group__;
                                                            transform((*it).second.begin(), (*it).second.end(), group__.begin(), toupper);
                                                            group__[(*it).second.size()]='\0';
                                                            SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK1),LB_ADDSTRING,0,(LPARAM)(LPCSTR)group__.data());
                                                            break;
                                                        }
                                                    }
                                                    for(std::multimap<std::string,pairString>::iterator it = prodName.begin(); it!=prodName.end(); ++it)
                                                    {
                                                        if(atoi((*it).second.first.data())==atoi(a2)) 
                                                        {
                                                            std::string name_product__;
                                                            transform((*it).second.second.begin(), (*it).second.second.end(), name_product__.begin(), toupper);
                                                            name_product__[(*it).second.second.size()]='\0';
                                                            SendMessage(GetDlgItem(hwnd_TO,ID_LIST_PRODUCT_SPISOK2),LB_ADDSTRING,0,(LPARAM)(LPCSTR)name_product__.data());
                                                            break;
                                                        }
                                                    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2015, 16:16
Помогаю со студенческими работами здесь

List, потоки. Съедает память
Всем привет. Написал приложение. Спасибо всем тут, кто помогал советами. Мое приложение работает в локальной сети. Посылает запросы...

Mbuffer bitmap съедает память
Приветствую, Есть маленькое приложение блокнот - ListActivity на основе BaseAdapter, читающего данные из файла, плюс еще пара activity с...

Съедает память жесткого диска
Через раздел свойства системы показывает что на диске свободно 1837 Мб, а на вкладке Компьютер 140 Мб. При изменении файла подкачки пишет:...

Рекурсия съедает всю память
Здравствуйте! Пытаюсь решить задачу: Написал такой код, он корректно работает на не слишком больших числах, но при ограничении до...

Что съедает оперативную память
При загрузки винды или во время работы, в диспетчере пишет, что оперативная память занята на 50-60% в то же время когда во вкладке...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru