问题标签 [realloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6702 浏览

c - 将 realloc 与 for 循环一起使用

我正在使用 realloc 在运行时在动态数组中分配内存。首先,我用 calloc 分配了一个内存,其 sizeof 是一个随机整数 a。在我的程序中,我采用了 a=2。之后我想存储生成的 14 个随机值,所以我必须使用 realloc 调整内存大小。我在 for 循环中做同样的事情。对于 1 次迭代,realloc 可以工作,但在该大小不会增加之后,会出现“堆损坏”错误。我无法理解这个问题。如果可以的话,请帮助我,了解问题发生在哪里以及如何解决它。非常感谢。下面是我的代码:

0 投票
4 回答
3227 浏览

c - realloc - 内存泄漏

我有一些C代码:

显然,strnappnd 在 realloc 行泄漏。为什么?

0 投票
3 回答
259 浏览

c - 重新分配后的动态内存存储问题 - C

对于学校的作业,我们必须使用结构来制作矩阵,该矩阵可以为无限量的矩阵存储无限量的点。(理论上无限)

对于作业,我决定使用 calloc 和 realloc。矩阵的大小如何变化:每次达到其点的限制时,它的大小都会翻倍(因此它从 1 开始,然后到 2,然后是 4,依此类推)。每次添加矩阵时,它的大小也会翻倍。

这就是我的问题所在。添加初始矩阵后,它会添加第二个矩阵名称和点,它给了我以下信息:

B???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

B 是我想要的部分(因为我稍后会使用 strcmp),但是 ? 标记不应该在那里。(明显地)

我不确定它为什么会这样做。由于代码是模块化的,因此要获得其中的一部分来准确显示它是如何进行的并不是很容易。

注意:我可以通过它的方法访问矩阵的点:(MyMatrix[1].points[0].x_cord;这只是一个例子)

产生问题的示例代码:

结构:

设置矩阵功能:

增长矩阵功能:

添加矩阵函数,在矩阵增长一次后输出此问题。

0 投票
5 回答
28292 浏览

c - 结构中的数组和结构的 Malloc

如何 malloc 一个结构在另一个结构内?

我还想在结构中分配一个项目数组,然后在需要时重新分配这个数组,这是如何正确完成的?

你能否举一个声明结构的例子,然后是上面的例子。

我有点不确定事情的顺序。

是否会释放结构中的数组,然后释放结构本身,必须在创建结构时分配结构,然后分配/声明其字段等?

0 投票
6 回答
725 浏览

c - c 从 0 开始重新分配内存

是否可以从 C 中指向 NULL 的指针重新分配内存?

0 投票
8 回答
6469 浏览

c++ - realloc 调用会引入多少开销?

realloc在循环的每次迭代中都使用了for超过 10000 次的循环。

这是一个好习惯吗?realloc调用很多次会报错吗?

0 投票
1 回答
231 浏览

c - 意外的 realloc() 行为

作为更大程序的一部分,我有一种计算多项式导数系数的方法。但这不是问题:)。在下面的代码中,如果我跳过 realloc() 调用,我会在 (*coef) 中得到我期望的结果。使用 realloc 元素之一设置为 0。这是我的错,还是 realloc() 行为实际上是意外的?

如果运行它会有所帮助,我还将附上测试程序的完整源代码......

0 投票
5 回答
527 浏览

c - realloc 作业帮助

对于作业,我必须做的部分事情涉及使用mallocand realloc。我首先创建一个二维字符数组,维度是行数和字符数。然后我使用malloc分配足够的内存来存储来自某个文件的输入。使用fgets我一次读取一行,并将其存储在数组中。这部分工作正常(或者我认为)。当我尝试为更多行重新分配内存时,问题就出现了。程序流程应该是这样的:

创建一个 50 行的字符数组,每行 80 个字符(工作)

用于fgets一次读取一行并将其保存到数组中(工作)

读取 50 行后,重新分配数组以允许 100 行(不起作用)

根据需要继续重新分配(不工作)

这是我到目前为止所拥有的(至少它的核心,我省略了不相关的代码):

我的直觉告诉我问题出在realloc.,所以我将解释我认为它在做什么。

第一个参数lines是我想重新分配一定数量内存的指针。NUM_OF_LINES是我想增加大小的数量。我将它乘以reallocLinesCount,这是一个计数器,用于跟踪我应该拥有多少组 50 行。该sizeof(*lines)部分是指向 a 的指针的大小char

感谢您的阅读,非常感谢您的帮助:)

编辑:谢谢大家的回复;我现在没有时间阅读所有答案,但是一旦这个迫在眉睫的截止日期过去,您的所有答案都会得到更彻底的阅读和理解:D

0 投票
1 回答
4671 浏览

c - realloc 错误:释放对象的校验和不正确

我尝试编写从标准输入读取数据的代码:

但是像这样运行它之后: ~# dd if=/dev/zero bs=1024 count=8 | ./test 我有这个错误:

谁能帮助我。

0 投票
3 回答
2294 浏览

c++ - realloc 怎么不能工作,而 malloc 可以?

我已经到了 realloc 停止返回指针的地步——我假设数组没有空间来扩展或移动。唯一的问题是我真的需要该内存存在或应用程序无法按预期运行,所以我决定尝试 malloc - 期待它不起作用,因为 realloc 不起作用 - 但它确实如此。为什么?

然后我将指针数组memcpy到新分配的数组中,但发现它破坏了它,像0x10和0x2b这样的指针被放入了数组中。有真正的指针,但如果我用 for 循环替换 memcpy,就可以修复它。为什么 memcpy 这样做?我不应该在我的代码中使用 memcpy 吗?

代码:

经过我所有的修复后,代码可能会初始化。这里有趣的是,在对数组进行排序之后,我用 malloc 分配了一个巨大的数组,因此将这些数组重新排序为一个数组以用作 GL_ARRAY_BUFFER。如果 realloc 由于空间不足而没有分配,那么为什么不分配呢?

最后,这导致它最终崩溃。在通过渲染功能后一旦它崩溃。如果我删除了所有修复程序并在 realloc 未分配时被捕获,它会正常工作。这就引出了一个问题,分配我的数组而不是重新分配以进一步导致问题进一步有什么问题?

我的数组是浮点指针的指针。当我增大数组时,它会转换为指向浮点数并重新分配的指针。我在 Android 上构建,所以这就是我认为内存不足的原因。