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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nickrb
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 37
#1

_block_type_is_valid при вызове delete() - C++

12.09.2011, 11:49. Просмотров 975. Ответов 1
Метки нет (Все метки)

код для генерации случайного графа

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
#define m 3   //Число входящих и исходящих ребер.
#define N 200 //Минимально требуемое число вершин в графе.
 
using namespace std;
 
class node
{
public:
    int par; //Номер вершины-предка
    bool lastInLevel; //Узел – последний в уровне.
    bool suspended; //Висячий узел.
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    node* pn = new node; //Указатель на текущего обслуживаемого предка.
    node* pn2 = new node; //Указатель на текущую добавляемую вершину.
    int numOfNewNodes = 0; //Число добавляемых вершин.
    unsigned int k = 0; //Номер обслуживаемой вершины. 
    int v = 0; //Число висячих узлов.
 
      srand((int)time(NULL)); 
    
    vector<node> Node; 
    pn->par = 0;
    pn->lastInLevel = 1;
    pn->suspended = 1;
    Node.push_back(*pn); //Добавление первого узла
 
    k+=Node.size(); 
      pn->lastInLevel = 0;
    pn->suspended = 0;
 
while(k<=Node.size())//Пока существуют необслуженные вершины.
{
    *pn = Node[k-1]; 
 
    if (k==1) //Исключение случая выпадения 0 для первой вершины.
       {
           do {
           numOfNewNodes = rand()%m;
           } while(numOfNewNodes==0);
       }
    else numOfNewNodes = rand()%m;
 
    if (numOfNewNodes==0) //Обработка случая выпадения 0 
                            //для остальных вершин. 
         { 
               if (Node[k-1].lastInLevel == 1) 
                   Node[Node.size()-1].lastInLevel = 1; 
             Node[k-1].suspended = 1;
               //Обслуживаемая вершина объявляется висячей. Если она
               //последняя в уровне, тогда последняя вершина предыдущего
               //предка объявляется последней в уровне.
         } 
      else Node[k-1].suspended = 0;
 
    for (int i=0;i<numOfNewNodes;i++) //Процесс обслуживания вершины.
    {
        pn2->par = k;
        pn2->lastInLevel = 0;
        pn2->suspended = 1;
        if (i+1 == numOfNewNodes && pn->lastInLevel==1) 
               pn2->lastInLevel = 1; 
               //Вершина объявляется последней в уровне, если ее предок
               //является таковым, и данная вершина – последняя в очереди 
               //на добавление.
        Node.push_back(*pn2);
        if (pn2->lastInLevel==1 && Node.size() >= N) 
               //Проверка условия остановки построения.
               //Уровень обслужен до конца, и граница в N узлов преодолена 
               {
                    Node[Node.size()-1].lastInLevel=1; 
                    goto finish; //Прекращение построения
               }
    }
    k++;
 
}
finish:
//{…} Работа с графом
 
delete(&pn);
delete(&pn2);
delete(&Node);
return 0;
}
объясните ошибку
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 11:49     _block_type_is_valid при вызове delete()
Посмотрите здесь:

При вызове delete[] _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Функция strtok влияет на массив second, после чего его невозможно удалить, не могу понять чего. first удаляет без проблем. FILE*...

_BLOCK_TYPE_IS_VALID при вызове деструктора класса - C++
при вызове деструктора моего класса вылетает ошибка _BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse) конструкрор копирования создал и оператор =...

При вызове деструктора выдается ошибка _BLOCK_TYPE_IS_VALID (pHead->nBlockUse) - C++
Вопрос на форуме поднимался раз 100, но все равно не могу понять в чем проблема. Знаю, что искать нужно в setSpace() и getFlat(). Но что...

При вызове деструктора вылазит ошибка _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Понимаю,что подобный вопрос на форуме поднимался не раз,но разобраться не могу всё равно. Вот описание класса: class Stroka { ...

_BLOCK_TYPE_IS_VALID(Phead_nBlockUse) - C++
Использую стандартную библиотеку string. Ошибка в диструкторе, подскажите пожалуйста, как правильно. message ,errStr типа string. ...

Ошибка Expression: _BLOCK_TYPE_IS_VALID - C++
Всем добрый день. Помогите, пожалуйста, с данной ошибкой. Понял, что удаляю уже удаленный объект, но почему это происходит никак не пойму,...

_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Нужна помощь гуру. Искать ошибку тут в коде ненужно, сам все нашёл, мне нужно объяснение почему так происходит, увы нигде не нашёл...

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Ребят, умоляю помогите. Незнаю что я опять делаю не так, но выдает такую ошибку. В общем задание такое: Работа с бинарными файлами. ...

Деструктор и _Block_Type_Is_Valid (pHead->nBlockUse) - C++
Приветствую! Встретился сегодня с такой проблемой. Есть функция, которая возвращает объект. При выходе из функции появляется ошибка...

Signal: SIGABRT при delete[] - C++
Здравствуйте. Есть у меня такой метод: char *Request::addGetParam(char *link, const char *pKey, const char *val) const { char...

Ошибка при использовании new[] / delete[] - C++
Здравствуйте. Пишу учебную программу, моделирующую движение лифта (если кто учебник Дейтелов читал, тот поймет :) ). Для начала приведу...

Ошибка при использовании delete - C++
И снова здравствуйте! Пишу раз третий.Я уже готов убицца ап сцену изза этого delete.Я не понимаю что не так делаю: class CMenu { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3032 / 2353 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
12.09.2011, 11:57     _block_type_is_valid при вызове delete() #2
Цитата Сообщение от nickrb Посмотреть сообщение
C++
1
2
3
delete(&pn);
delete(&pn2);
delete(&Node);
C++
1
2
delete pn;
delete pn2;
Node статический объект, его удалять не надо.
Yandex
Объявления
12.09.2011, 11:57     _block_type_is_valid при вызове delete()
Ответ Создать тему
Опции темы

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