Это мой код жизни Конуэй.Conways игра - выход из связанных данных
Функция newgen проверяет соседние ячейки, все восемь из них, даже если ячейка находится на краю матрицы. Как я могу изменить его таким образом, который не приведет к доступу к данным, связанным с данными, и к неопределенному поведению?
Также у меня есть эта ошибка:
1 IntelliSense: a value of type "void *" cannot be assigned to an entity of type "int *"
Код является:
void copy() {
int i, j;
for (i = j = 0; i < HEIGHT; i++) {
for (; j < WIDTH; j++) {
gb2[i][j] = gb[i][j];
}
}
}
void init() {
int i, j;
for (i = 0; i < HEIGHT; i++) {
gb [i] = malloc(sizeof(int)*WIDTH);
gb2[i] = malloc(sizeof(int)*WIDTH);
}
for (i = 0 ; i < HEIGHT; i++) {
for (j = 0 ; j < WIDTH; j++) {
gb [i][j] = 0;
}
}
gb[0][0] = 1;
gb[0][1] = 1;
gb[1][0] = 1;
gb[1][1] = 1;
copy();
}
... INT основной() { INT I; init(); newgen(); printg(); для (i = 0; i < HEIGHT; i ++) { free (gb [i]); бесплатно (gb2 [i]); } }
Не могли бы вы рассказать нам, в чем проблема с вашей программой? Для предупреждения вы получите его, потому что вы компилируете с помощью компилятора C++: в C это хорошо, в C++ выведите значение «malloc' return» в 'int *'. – ouah
В 'newgen()' 'j-1' выходит за пределы, это то, что вы хотите исправить? Также вам не хватает 'free'ing' gb2' массива указателей ... AFAIK 'free'ing как раз перед выходом программы не является существенным последствием –
another.anon.coward, где я скучаю бесплатно? GB2? не могли бы вы объяснить больше? – Blondy21