有时候,我的列表“消失”了一些项目。
调试,我意识到最终会发生。
所以我认为这与分配内存有关。
问题:
需要从文件中获取一些哈希值,然后插入列表中以备后用。
.txt:
####
....
....
....
....
.##.
.##.
....
####
....
....
....
我将每个哈希中包含行和值的数组插入列表,如:
示例哈希2:
line[0][0] = 1
line[0][1] = 2
line[1][0] = 1
line[1][1] = 2
关于哈希:
有时在文本文件上使用第一个哈希时,如果我使用多个哈希,他就会消失。
使用第二个哈希,有时他会与第一个数组一起消失。
我看不到带有不同哈希值的情况。
问题是,在以前的交互中,我正确地获得了数组列表,所以当我继续进行操作时,数组的一部分消失了。
下面的所有代码
输出:从.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
答案 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)