问题标签 [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 投票
7 回答
160 浏览

c - 使用 C 动态存储文件中的信息

我是 C 的新手,正在尝试学习一些东西。我正在尝试做的是读取文件并存储信息。由于格式将是 CSV,因此计划是读取每个字符,确定它是数字还是逗号,并将数字存储在链表中。我遇到的问题是读取长度超过一个字符的数字,如下例所示。

5,2,24,5

这是到目前为止我得到的代码,它只是没有返回我期望的输出。这是代码,输出在代码示例下方。

这是输出:

我不明白为什么令牌的长度是 '5',而我期望它是 1,而 5 之后看起来很奇怪的字符(用'a#'表示)。谁能帮我更好地理解这一点?

0 投票
5 回答
33451 浏览

c - 使用 realloc 收缩分配的内存

关于 C 中 realloc 函数的简单问题:如果我使用 realloc 来缩小指针指向的内存块,“额外”内存是否会被释放?还是需要以某种方式手动释放?

例如,如果我这样做

我会有内存泄漏吗?

0 投票
4 回答
438 浏览

c - 重新分配一个结构,c

我有下一个结构

我想扩展 **board,这意味着我需要更多内存,因此需要调用 realloc()。所以我的问题是我该怎么做 - 我应该在数组中的每一行分别调用 realloc() 并在整个结构上调用它吗?谢谢!

0 投票
1 回答
545 浏览

c - 多次使用 realloc()

以下哪一项更可取

或这个

0 投票
2 回答
3160 浏览

c - 函数内的 realloc 数组

我尝试在函数内重新分配数组。

当我尝试在此函数之外打印数组时,它不起作用,因为 ar 现在指向内存中的其他位置。我如何在函数内部重新分配它并且仍然指向函数外部的同一个地方?

PS:Sa* 是指向结构的指针

0 投票
6 回答
2522 浏览

c - realloc() 在嵌入式系统中安全吗?

在为嵌入式系统开发软件时,我realloc()多次使用函数。现在有人说我“不应该realloc()在嵌入式中使用”,没有任何解释。

对嵌入式系统很realloc()危险,为什么?

0 投票
1 回答
437 浏览

iphone - iPhone 上的 OpenGL ES 2.0:无法超过小索引/顶点数

我会尽量保持简短:我在 iPhone 上使用 OpenGL ES 2.0,并且正在利用顶点缓冲区对象一次在屏幕上渲染许多形状。

一系列从零向上的索引用于GL_ELEMENT_ARRAY_BUFFER,它们存储在:

每个形状都有一个顶点数。创建新形状时,总顶点计数“vxCount”用于为 ixData 重新分配内存:

当然,ixData 也有一个初始的 malloc。

每个形状都有 6 个顶点属性(2 个位置,4 个颜色),这些都是GLfloat. 每个形状总共有 24 个顶点。vector<Shape>由于代码是 C++ ,因此形状存储在 a中。该值vxCount是通过将此形状向量的大小乘以每个形状的顶点数(即shapes.size()*24)来计算的。

每个形状的位置每帧都会改变,所以我在每次渲染调用 glDrawElements 之前重新提交缓冲区数据:

该应用程序适用于包括 508 在内的任意数量的形状。但是,当我尝试添加第 509 个形状时,我得到一个EXC_BAD_ACCESS索引缓冲区数据;相关行在上面的代码中带有星号。

上面代码中的 NSLog 打印输出如下所示。如您所见,最新分配的顶点计数与提交原始索引时的计数一致。

...

2011-08-31 20:35:59.438 nibfree [26409:707] 为 503 个形状、12072 个顶点分配 ixData

2011-08-31 20:35:59.441 nibfree [26409:707] 为 504 个形状、12096 个顶点分配 ixData

2011-08-31 20:35:59.444 nibfree [26409:707] 为 505 个形状、12120 个顶点分配 ixData

2011-08-31 20:35:59.448 nibfree [26409:707] 为 506 个形状、12144 个顶点分配 ixData

2011-08-31 20:35:59.451 nibfree [26409:707] 为 507 个形状、12168 个顶点分配 ixData

2011-08-31 20:35:59.454 nibfree [26409:707] 为 508 个形状、12192 个顶点分配 ixData

2011-08-31 20:35:59.457 nibfree [26409:707] 为 509 个形状、12216 个顶点分配 ixData

2011-08-31 20:35:59.746 nibfree [26409:707] 渲染 vxcount 为 12216

大约 12k 个顶点对设备来说应该没有问题,并且索引数据的类型GLushort意味着 0-65535 顶点索引应该是可能的。

我真的被难住了,有人能猜出哪里出了问题吗?我是否超出了某些特定于 iPhone 的顶点/索引缓冲区限制?

更新

为了增加洞察力,我将形状大小从 24 verts 减半到 12 verts。然后我又试了一次,达到了1536 shapes, 18432 vertices. 如果我尝试添加 1537 个形状,每个形状有 12 个顶点,那么它会像以前一样崩溃,带有EXC_BAD_ACCESS.

该最新测试表明 vxData/ixData 存储不是问题,顶点或顶点索引的数量也没有限制。可能的形状数量增加了大约 3 倍 - 这是否表明它是我遇到的 GL_TRIANGLES 渲染怪癖?或者可能是对 realloc 的滥用?我真的不确定为什么会出现问题:(

更新 2

另一组发现模式的数字:300 个顶点最多有 61 个形状,62 个导致崩溃。在 62 处有 vxcount 18300,​​最后一个 ixData 索引 18299 符合预期。

0 投票
3 回答
343 浏览

c - C中奇怪的内存错误

我正在用 C 语言编写一个程序来检查循环符号链接。策略是创建一个struct fileInfo:

这将存储文件的 inode 和 devID。我们创建这些结构的数组,并在每次打开新文件之前检查该文件是否已经存在。如果是这样,那么它是一个循环链接。

然而,我注意到,在对 func2() 进行了几次调用之后,出现了内存泄漏,并且 fileData 没有指向任何内容。我只是不确定泄漏是从哪里来的,因为我没有在 func2() 中释放任何东西。我假设有一些realloc恶作剧,但我不明白为什么。帮助将不胜感激!

0 投票
3 回答
3070 浏览

c - C中具有动态内存分配的结构

我需要将数据写入一个结构,其中数据的长度取决于我要发送到设备的命令。为此,我定义了以下结构:

注意:成员cmd、 *data_length* 和crc始终存在,而成员数据可以为空或最多包含 12 个字节。

我创建了一个函数,它根据传递给函数的参数返回一个初始化的命令:

函数 get_cmd() 的使用如下:

当我尝试编译此代码时,我从该行的编译器中收到一个错误:

并且编译器错误是:

使用realloc()的目的是重新调整数组数据的大小或从我的新命令结构中完全删除它。我的代码有什么问题?这是用动态内存分配初始化结构的正确方法吗?

0 投票
4 回答
1171 浏览

c - realloc 只是扩展内存还是可能导致内存问题?

我有以下代码:

输出:

从输出中,realloc返回一个指向新内存地址的指针。

所以问题是,除了释放 original 创建的位置之外,我是否应该明确释放这个位置malloc

或者它正在做上面代码所期望的事情Just expand the memory location reserved previously

谢谢。

EDIT: 实际上,下面的每个答案都为我提供了宝贵的信息。而且因为我必须选择一个答案来接受。我选择了更正我上述代码的那个!