问题标签 [calloc]

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 回答
23373 浏览

c - calloc v/s malloc 和时间效率

我感兴趣地阅读了malloc 和 calloc 之间的 C 后差异。我在我的代码中使用 malloc 并且想知道使用 calloc 会有什么不同。

我现在使用 malloc 的(伪)代码:

方案 1

如果我使用 calloc 而不是 malloc,那么我将拥有:

情景2

我有三个问题:

  1. 如果阵列非常大,哪种方案更有效?

  2. 如果阵列非常大,哪种方案更省时?

  3. 在这两种情况下,我只是写入数组,因为对于 for 循环中的任何给定迭代,我从第一个元素到最后一个元素按顺序写入每个数组。重要的问题:如果我在场景 1 中使用 malloc,那么是否有必要将元素初始化为零?用 malloc 说我有数组 z = [garbage1,garbage2,garbage 3]。对于每次迭代,我按顺序编写元素,即在第一次迭代中我得到 z =[some_result,garbage2,garbage3],在第二次迭代中,我在第一次迭代中得到 z =[some_result,another_result,garbage3] 等等on,那么我是否需要在 malloc 之后专门初始化我的数组?

0 投票
4 回答
5080 浏览

c++ - 二维数组,在 C 中使用 calloc

我正在尝试创建一个二维字符数组来存储字符行。例如:

由于行必须是动态的,因为我不知道我首先需要多少行。这是我的代码:

我知道每行不能超过 200 个字符。我不断收到诸如“错误 C2059:语法错误:'for'”之类的错误。关于我做错了什么的任何想法?

0 投票
3 回答
2171 浏览

c - Valgrind 说“堆栈分配”,我说“堆分配”

我正在尝试使用 valgrind 跟踪段错误。我从 valgrind 收到以下消息:

但是,这是有问题的行:

是什么赋予了?我认为任何对 malloc 或 calloc 的调用都会分配堆空间;这里没有分配其他变量,对吧?是否有可能正在进行另一个我没有看到的分配(有问题的堆栈分配)?

编辑:我目前的怀疑是堆栈分配的数组:我声明了一个指向双精度(堆栈)的指针,然后将返回双精度 * 的函数的结果分配给它。然后我将它移动到先前分配的位置。

我不能 memmove、memcpy 或分配一个堆栈变量然后希望它会持续存在,可以吗?

0 投票
4 回答
3826 浏览

c - 调用 calloc - 内存泄漏 valgrind

以下代码是来自NCURSES菜单库的示例。我不确定代码可能有什么问题,但 valgrind 报告了一些问题。有任何想法吗...

源代码:

0 投票
4 回答
72863 浏览

c - C - calloc() 诉 malloc()

可能重复:
c malloc 和 calloc 之间的区别

请解释这句话的意义,

malloc() 和 calloc() 函数的另一个区别是 malloc() 函数分配的内存包含垃圾值,而 calloc() 函数分配的内存全为零。

来源(“C”编程,Salim Y. Amdani)

谢谢

0 投票
5 回答
572 浏览

c - 是否有任何操作系统为 malloc() 实现缓冲?

for/while/do 中的许多 c/malloc() 会消耗大量时间,所以我很好奇是否有任何操作系统为快速 malloc 缓冲内存。

我一直在思考是否可以通过为 malloc 编写“贪婪”包装器来加速 malloc。例如,当我要求 1MB 内存时,初始分配器将分配 10MB,然后在第 2、第 3、第 4 等...调用 malloc 函数将简单地从首先以“正常”方式分配的块返回内存。当然,如果没有足够的可用内存,您将需要分配一个新的贪婪内存块。

不知何故,我认为以前一定有人做过这个或类似的事情。所以我的问题很简单:这是否会显着加快内存分配过程。(是的,我本可以在提问之前尝试过,但如果没有必要,我只是懒得写这样的东西)

0 投票
2 回答
1745 浏览

c - 初始化结构内的数组 - C?

似乎有内存分配问题,并认为这是因为在我的结构中,有一个指向另一个结构的数组的指针。但是,我没有初始化这个数组,也不确定如何:

希望这是有道理的,你可以帮忙!

0 投票
2 回答
1335 浏览

c - 如何在C中初始化指向指针结构的指针?

我有一个结构是一个节点,另一个是这些节点的列表。在 list 结构中,它是一个节点数组,但不是数组,而是一个指向具有大小整数的指针的指针:

如何将每个“数组”的 MyDef *entry 和 Node *next 设置为 NULL?

0 投票
3 回答
132 浏览

c - 如何将“MyDef ** t”分配到特定长度,而不是 C 中的“MyDef * t[5]”

像下面这样的结构可以正常工作,我可以在调用malloc(sizeof(mystruct))后使用t

我希望能够动态设置MyDef数组的长度,如下所示:

除了malloc(sizeof(mystruct))之外,我还需要做什么才能让它工作,所以我可以做TestStruct->t[3] = something?只是得到一个分段错误!

谢谢!

使用导致段错误的代码进行编辑,除非我是盲人,否则这似乎是迄今为止的答案:

0 投票
5 回答
13177 浏览

c - calloc 的两个参数

为什么calloc需要两个参数而不是一个 like malloc

具体来说,由于以下表达式之间(或是否存在?)之间没有区别:

为什么不接受要分配的总字节数?这个界面背后的基本原理是什么?为什么这不适用于malloc?