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

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Построить класс для работы с односвязным списком http://www.cyberforum.ru/cpp-beginners/thread789891.html
Построить класс для работы с односвязным списком. Элементы списка – целые числа. Создать список List1. Построить список List2, содержащий порядковые номера максимальных элементов списка List1.
C++ Самоучитель Microsoft Visual Studio 2010 Всем доброго временит суток! Есть у кого нибуть Самоучитель Microsoft Visual Studio 2010? в любом формате или скинте работающиую ссылку на скачивание... http://www.cyberforum.ru/cpp-beginners/thread789886.html
C++ Как считать файл до конца вместе '\n' ?
При помощи ifstream
C++ Построить класс для работы со списком
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. Программа должна обеспечивать: хранение всех заявок в виде списка, добавление заявок в список, удаление заявок, вывод заявок по заданному номеру рейса и дате вылета, вывод всех заявок.
C++ Удалить знаки пунктуации из строки http://www.cyberforum.ru/cpp-beginners/thread789857.html
Все что вышло у меня. int main(){ string str; getline(cin, str); for(string::size_type index=0; index!=str.size(); ++index){ if(ispunct(str)) str=''; cout<<str; } return 0;
C++ Нарушение прав доступа при записи #include <iostream> void testfunc(char*& test) { test = 's'; } int main() { char* test = "Test"; подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
19.02.2013, 13:16     Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему?
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка системы. А в конструкторе начинается невообразимое.

Код сокращал донельзя, больше не упрощается без того, чтобы ошибка не исчезла. Так, если использовать не конструктор класса, а просто какую-нибудь функцию, то ошибка не проявляется.


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
#include <stdio.h> 
#include <Windows.h> 
#include <tlhelp32.h>
#include <vector>
#include <string> 
using namespace std;
 
//структура "узел"
struct uzel {
 
 public:
 
 //конструктор
 uzel (string ima_processa, HANDLE hProcessSnap) {
 
     //Заполняем PROCESSENTRY32
     PROCESSENTRY32 pe32;
     Process32First(hProcessSnap, &pe32);
 
     printf ("hProcessSna= %x\n", hProcessSnap);
     
     //Тут выводится лажа полнейшая!
     printf ("\npe32_.th32ProcessID= %d\n", pe32.th32ProcessID);
     printf ("pe32_.szExeFile= %s\n\n", pe32.szExeFile);
 
     //Вот кладу в вектор один элемент типа PROCESSENTRY32
     v_PROCESSENTRY32.push_back(pe32);
 
     //А тут всё корректно
     printf ("v_PROCESSENTRY32.size()= %d\n", v_PROCESSENTRY32.size());
     printf ("ima_processa= %s\n", ima_processa.c_str());
 
     //НО если вот с этими двумя строчками поэксперементировать,
     //например: закомментить, или закомментить одну из них
     //ТО почему-то код, который находится ВЫШЕ, отработает корректно, то есть выведется
     //PID, равный 0 и имя процесса [System Process]
     //ПОЧЕМУ ТАК?
     if (ima_processa== string(pe32.szExeFile)) 
       it= v_PROCESSENTRY32.begin()+ v_PROCESSENTRY32.size()- 1;      
     
 
 }
 
 //Это итератор 
 vector<PROCESSENTRY32>::iterator it;
 
 //это вектор
 vector<PROCESSENTRY32> v_PROCESSENTRY32;
 
};
                                  //+
                                  //+
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
int main () {
 SetConsoleCP (1251);
 SetConsoleOutputCP (1251);
 HANDLE hProcessSnap= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 uzel uz ("explorer.exe", hProcessSnap); 
 getchar ();
 getchar ();
 return 0;
}

Спасибо, кто откликнется
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru