У меня есть вопрос о перераспределении памяти в C, потому что я думаю, что это вызывает проблему, которая у меня уже неделю, так и не найдя ее.Я, у вас есть бумага в квадрате, а ваш кто-то залил пару квадратов зеленым цветом.Итак, сейчас я пытаюсь прочитать координаты зеленых квадратов (кто-то помещает их в стандартный вывод), а затем я хотел бы связать их вместе, посмотрев, соседствуют ли они вместе.Таким образом, в структуре Cell все ячейки имеют координаты, указатели на потенциальных соседей и счетчик соседей.И есть функция setNeighbours, которая выясняет, являются ли они соседями, и заполняет адреса в каждом объекте.Так что моя проблема заключается в методе перераспределения, потому что я знаю, что это потенциально переносит адресный блок куда-то еще, и в связи с этим иногда (возможно, в 40% случаев) я получаю неправильные результаты при распечатке результатов.
Код ниже.Я знаю, что причиной является линия перераспределения, потому что, если я действительно удаляю ее и просто помещаю достаточно места в строку malloc, чтобы потом не было необходимости в realloc, тогда все работает нормально.Я предполагаю, что есть один глупый момент, когда я звоню по старому адресу, который изменился раньше, но я не вижу его.Видит ли это?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>
typedef struct Square {
long index;
long x;
long y;
struct Square *Above;
struct Square *Below;
struct Square *Right;
struct Square *Left;
int count;
} SquareType;
SquareType *cellArr;
long countSquares = 0;
Пример ввода:
1 3
2 3
3 3
2 2
2 1
3 2