Отсутствующие элементы в конечном итоге список массивов - PullRequest
0 голосов
/ 03 мая 2019

Иногда мой список «исчезает» с некоторыми элементами.

Отладка, я понимаю, что в конце концов это произойдет.

Так что я считаю, что это проблема с тем, как выделяется память.

Проблема:

необходимо получить некоторый хэш из файла и вставить в список, чтобы иметь дело с ним позже.

.txt:

####
....
....
....

....
.##.
.##.
....

####
....
....
....

Я вставил всписок массив со строками и значениями для каждого хеша, например:

пример хеша 2:

line[0][0] = 1
line[0][1] = 2
line[1][0] = 1
line[1][1] = 2

О хешах:

С первым хешем в текстовом файле, иногда, еслия использую больше одного, он исчезает.

Со вторым хешем иногда он исчезает с первым массивом.

Я не вижу, чтобы это происходило с разными хешами.

проблема в том, что при предыдущем взаимодействии я правильно получил список массивов, поэтому, когда я продолжаю, часть массива исчезает.

Весь код ниже

Код для обработки всего

Выходы: начиная с хэша 1 на .txt

Вывод -> Хэш 2 Начиная с хэша 1и 2

I: 0  J: 0, tmp[0][0]: Value: 0
I: 0  J: 1, tmp[0][1]: Value: 1
I: 0  J: 2, tmp[0][2]: Value: 2
I: 0  J: 3, tmp[0][3]: Value: 3
Next from list
I: 0  J: 0, tmp[0][0]: Value: 1
I: 0  J: 1, tmp[0][1]: Value: 2
I: 1  J: 0, tmp[1][0]: Value: 1
I: 1  J: 1, tmp[1][1]: Value: 2

Это означает, что он выполнил распределение и правильно получил массив.

Но когда мы перейдем к следующему взаимодействию со следующим хешем, часть этого массива исчезнет.

-> Выходной хеш 2 + 1

Следующее взаимодействие, чтобы получить хэш сейчас n3

I: 0  J: 0, tmp[0][0]: Value: 0
I: 0  J: 1, tmp[0][1]: Value: 1
I: 0  J: 2, tmp[0][2]: Value: 2
I: 0  J: 3, tmp[0][3]: Value: 3

Next
I: 1  J: 0, tmp[1][0]: Value: 1
I: 1  J: 1, tmp[1][1]: Value: 2

Next
I: 0  J: 0, tmp[0][0]: Value: 0
I: 0  J: 1, tmp[0][1]: Value: 1
I: 0  J: 2, tmp[0][2]: Value: 2
I: 0  J: 3, tmp[0][3]: Value: 3

1 Ответ

0 голосов
/ 03 мая 2019

Проблема решена.

Я уже создал свою собственную функцию realloc.

char    *ft_realloc(char *str, size_t size)
{
    char *new_str;
    int i = 0;

    new_str = malloc(size);
    ft_bzero(new_str,size);
    if(!new_str)
        return (0);
    if(str)
    {
        ft_strncpy(new_str, str, size);
        free(str);
    }
    return new_str;
}

Решение, установить в ноль, прежде чем бесплатно.

str = NULL
free(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...