【发布时间】:2019-09-21 13:35:03
【问题描述】:
有时,我的清单“消失”了一些项目。
调试,我意识到最终会发生。
所以我认为这是内存分配方式的问题。
问题:
需要从文件中获取一些哈希值,然后插入到列表中以供以后处理。
.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
【问题讨论】:
-
请使用您正在使用的代码发布minimal reproducible example。
-
我明白了。问题在于 realloc 函数。我创建了自己的 realloc,由于某种原因,他正在“吃”我数组的一部分。还没解决,但我知道是从那里开始的
-
对不起,我知道这不是一个好帖子,但是,是的,是一个大错误,我在过去 2 天里一直在苦苦挣扎
-
我的重新分配:pastebin.com/iKVHnGRm
标签: c++ c arrays memory memory-management