c++ - 缺少的项目最终数组列表
问题描述
有时,我的清单“消失”了一些项目。
调试,我意识到最终会发生。
所以我认为它是如何分配内存的问题。
问题:
需要从文件中获取一些哈希,然后插入到列表中以供以后处理。
。文本:
####
....
....
....
....
.##.
.##.
....
####
....
....
....
我在列表中插入了一个数组,其中每个哈希的行和值如下:
示例哈希 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
解决方案
问题解决了。
我之前创建了自己的 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)
推荐阅读
- ruby - Inspec 命令不打印服务器的内存
- c++ - 链接列表中的代码崩溃而实际上没有显示任何错误
- c++ - 我真的需要手动指定 cmake 项目中的所有源文件吗?
- xcode - SwiftUI 在模拟器中的显示与 watchOS 设备上的不同
- google-apps-script - 是否已弃用 Google Apps 脚本的 PropertiesService.getUserProperties()?
- javascript - 如何在向上或向下滚动时使打开的菜单透明
- javascript - 无法设置值并使用 getElementsByName 提交
- machine-learning - 分类准确率低,我该怎么办?
- python - 是否有任何适用于 sqlite(用于测试)和 mysql(用于生产)的 sqlalchemy 列表插值语法?
- javascript - 仅 Aframe 广告牌 Y 轴