丢失的物品最终会排列列表

时间:2019-05-03 02:11:23

标签: c++ c arrays memory memory-management

有时候,我的列表“消失”了一些项目。

调试,我意识到最终会发生。

所以我认为这与分配内存有关。

问题:

需要从文件中获取一些哈希值,然后插入列表中以备后用。

.txt:

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

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

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

我将每个哈希中包含行和值的数组插入列表,如:

示例哈希2:

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

关于哈希:

有时在文本文件上使用第一个哈希时,如果我使用多个哈希,他就会消失。

使用第二个哈希,有时他会与第一个数组一起消失。

我看不到带有不同哈希值的情况。

问题是,在以前的交互中,我正确地获得了数组列表,所以当我继续进行操作时,数组的一部分消失了。

下面的所有代码

Code to deal with everything

输出:从.txt上的哈希1开始

输出->哈希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 :(得分:0)

问题解决了。

我以前创建了自己的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;
}

解决方案,在免费之前设置为null。

str = NULL
free(str)