11.01.2013, 22:39. Просмотров 863. Ответов 2
Приветствую! Сделал, казалось бы, простую программу, но у меня возникает ошибка на самом ровном месте:
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
| void print(node** graph, int V)
{
cout.setf(ios::left);
for (cnt i = 0; i < V; i++)
{
for (cnt j = 0; j < V; j++)
{
if (!graph[i][j].exist)
cout << setw(5) << "\\\\ ";
else
cout << setw(5) << graph[i][j].num << " "; [COLOR="Red"]//Вот здесь возникает ошибка[/COLOR]
}
cout << endl;
}
}
// driver program to test above function
int main()
{
ifstream file_graph("graph.txt");
int size;
file_graph >> size;
string auxiliary;
node ** graph;
graph = new node* [size];
for(cnt i = 0; i < size; i++)
graph[i] = new node [i];
for(cnt i = 0; i < size; i++) {
for(cnt j = 0; j < size; j++) {
file_graph >> auxiliary;
if(auxiliary == "INF")
graph[i][j].exist = false;
else {
graph[i][j].num = atoi(auxiliary.c_str());
graph[i][j].exist = true;
}
}
}
print(graph, size);
//floydWarshell(graph);
for(cnt i = 0; i < size; i++)
delete [] graph[i];
system("pause");
return 0;
} |
|
На указанном месте при выполнении отладчик VS'10 выдаёт ошибку вида:
HEAP[Floyd-Warsall.exe]: Invalid address specified to RtlValidateHeap( 00190000, 001965C8 )
ОС Windows инициировала точку останова в Floyd-Warsall.exe.
Это может быть вызвано повреждением кучи и указывает на ошибку в Floyd-Warsall.exe или в одной из загруженных им DLL.
Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит Floyd-Warsall.exe
Выведенное на экран окно содержит дополнительные данные для диагностики ошибки
При чём отмечу, что если нажать "продолжить" и пропустить еще несколько ошибок, то программа выполняется.
Собственно вот. В чём я накосячил? Спасибо!