首页 > 解决方案 > 缺少的项目最终数组列表

问题描述

有时,我的清单“消失”了一些项目。

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

所以我认为它是如何分配内存的问题。

问题:

需要从文件中获取一些哈希,然后插入到列表中以供以后处理。

。文本:

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

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

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

我在列表中插入了一个数组,其中每个哈希的行和值如下:

示例哈希 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

标签: c++carraysmemorymemory-management

解决方案


问题解决了。

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

解决办法,在free之前设置为null。

str = NULL
free(str)

推荐阅读