问题标签 [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.
c - calloc v/s malloc 和时间效率
我感兴趣地阅读了malloc 和 calloc 之间的 C 后差异。我在我的代码中使用 malloc 并且想知道使用 calloc 会有什么不同。
我现在使用 malloc 的(伪)代码:
方案 1
如果我使用 calloc 而不是 malloc,那么我将拥有:
情景2
我有三个问题:
如果阵列非常大,哪种方案更有效?
如果阵列非常大,哪种方案更省时?
在这两种情况下,我只是写入数组,因为对于 for 循环中的任何给定迭代,我从第一个元素到最后一个元素按顺序写入每个数组。重要的问题:如果我在场景 1 中使用 malloc,那么是否有必要将元素初始化为零?用 malloc 说我有数组 z = [garbage1,garbage2,garbage 3]。对于每次迭代,我按顺序编写元素,即在第一次迭代中我得到 z =[some_result,garbage2,garbage3],在第二次迭代中,我在第一次迭代中得到 z =[some_result,another_result,garbage3] 等等on,那么我是否需要在 malloc 之后专门初始化我的数组?
c++ - 二维数组,在 C 中使用 calloc
我正在尝试创建一个二维字符数组来存储字符行。例如:
由于行必须是动态的,因为我不知道我首先需要多少行。这是我的代码:
我知道每行不能超过 200 个字符。我不断收到诸如“错误 C2059:语法错误:'for'”之类的错误。关于我做错了什么的任何想法?
c - Valgrind 说“堆栈分配”,我说“堆分配”
我正在尝试使用 valgrind 跟踪段错误。我从 valgrind 收到以下消息:
但是,这是有问题的行:
是什么赋予了?我认为任何对 malloc 或 calloc 的调用都会分配堆空间;这里没有分配其他变量,对吧?是否有可能正在进行另一个我没有看到的分配(有问题的堆栈分配)?
编辑:我目前的怀疑是堆栈分配的数组:我声明了一个指向双精度(堆栈)的指针,然后将返回双精度 * 的函数的结果分配给它。然后我将它移动到先前分配的位置。
我不能 memmove、memcpy 或分配一个堆栈变量然后希望它会持续存在,可以吗?
c - 调用 calloc - 内存泄漏 valgrind
以下代码是来自NCURSES菜单库的示例。我不确定代码可能有什么问题,但 valgrind 报告了一些问题。有任何想法吗...
源代码:
c - C - calloc() 诉 malloc()
可能重复:
c malloc 和 calloc 之间的区别
请解释这句话的意义,
malloc() 和 calloc() 函数的另一个区别是 malloc() 函数分配的内存包含垃圾值,而 calloc() 函数分配的内存全为零。
来源(“C”编程,Salim Y. Amdani)
谢谢
c - 是否有任何操作系统为 malloc() 实现缓冲?
for/while/do 中的许多 c/malloc() 会消耗大量时间,所以我很好奇是否有任何操作系统为快速 malloc 缓冲内存。
我一直在思考是否可以通过为 malloc 编写“贪婪”包装器来加速 malloc。例如,当我要求 1MB 内存时,初始分配器将分配 10MB,然后在第 2、第 3、第 4 等...调用 malloc 函数将简单地从首先以“正常”方式分配的块返回内存。当然,如果没有足够的可用内存,您将需要分配一个新的贪婪内存块。
不知何故,我认为以前一定有人做过这个或类似的事情。所以我的问题很简单:这是否会显着加快内存分配过程。(是的,我本可以在提问之前尝试过,但如果没有必要,我只是懒得写这样的东西)
c - 初始化结构内的数组 - C?
似乎有内存分配问题,并认为这是因为在我的结构中,有一个指向另一个结构的数组的指针。但是,我没有初始化这个数组,也不确定如何:
希望这是有道理的,你可以帮忙!
c - 如何在C中初始化指向指针结构的指针?
我有一个结构是一个节点,另一个是这些节点的列表。在 list 结构中,它是一个节点数组,但不是数组,而是一个指向具有大小整数的指针的指针:
如何将每个“数组”的 MyDef *entry 和 Node *next 设置为 NULL?
c - 如何将“MyDef ** t”分配到特定长度,而不是 C 中的“MyDef * t[5]”
像下面这样的结构可以正常工作,我可以在调用malloc(sizeof(mystruct))后使用t:
我希望能够动态设置MyDef数组的长度,如下所示:
除了malloc(sizeof(mystruct))之外,我还需要做什么才能让它工作,所以我可以做TestStruct->t[3] = something?只是得到一个分段错误!
谢谢!
使用导致段错误的代码进行编辑,除非我是盲人,否则这似乎是迄今为止的答案:
c - calloc 的两个参数
为什么calloc
需要两个参数而不是一个 like malloc
?
具体来说,由于以下表达式之间(或是否存在?)之间没有区别:
为什么不接受要分配的总字节数?这个界面背后的基本原理是什么?为什么这不适用于malloc?