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

c - 是否可以拥有一个具有多个内存管理函数的 C(共享)库?

标题可能不是很清楚,所以最好解释一下我想要做什么。

我有一个 (C) 共享库,供我的几个应用程序使用。我现在想在 PostgreSQL 中使用我的共享库中的函数,所以我正在为 PostgreSQL (v8.4) 编写一个扩展库。

为了防止代码重复(遵循 DRY 理念),我希望扩展库只是围绕我上面描述的核心共享库的一个精简 API。问题就在于此。

在我的核心库中,我多次调用内存管理函数(主要是 calloc 和 realloc)。另一方面,PostgreSQL 有自己的内存管理函数,如 palloc、pfree 等。

理想情况下,我希望 PG 扩展库调用核心库。当执行 PG 调用时,我希望核心库使用 postgresql mem 函数,而当我的其他应用程序调用函数时,我希望核心库使用标准 C mem 函数。

我不知道这是否可能(它肯定可以让我不必为核心库复制整个现有代码)。我认为在核心库的头文件中添加一些定义,如下所示:

然后重新编译核心库。然而,经过后来的反思,我意识到这解决了编译时的问题,而不是运行时(除非我弄错了)——所以我已经没有关于如何解决这个问题的想法了。

这个可以吗。。如果是这样,怎么做?

0 投票
1 回答
233 浏览

data-structures - c中动态结构数组内的动态数组

我一直试图弄清楚如何初始化指向 2d 结构数组中的 3d 数组的指针。当我可以像这样声明结构时,它工作正常:

但不幸的是,该结构太大而无法声明为全局。所以我必须调用内存(系统上可用的192GB内存:win 7 64位);

我试图将“avg”变量分配给一块内存,但完全失败了。

0 投票
6 回答
131613 浏览

c - 将 sizeof 无效应用于具有结构的不完整类型

我有一个结构,其中放置了有关玩家的所有信息。那是我的结构:

这就是我的主要内容:

我要求用户提供玩家数量,然后我尝试分配所需的内存。但是我遇到了这个我无法弄清楚的编译器错误:

0 投票
2 回答
667 浏览

c - 如何预先计算 calloc 将分配多少内存?

我基本上有这段代码。

根据我的计算方式,calloc 应该分配了 215.265045 兆字节的 RAM,但是,程序最终超过了这个数字并分配了近 700mb 的内存。

所以看来我无法正确知道该函数将分配多少内存。

如何计算该属性?

0 投票
2 回答
1123 浏览

c - struct calloc 中的动态数组或指针失败,C

我正在尝试在 C 中完成对稀疏矩阵的分配。我有一个作为值和坐标列表的稀疏矩阵,并将其转换为耶鲁格式。

我遇到了一个以前似乎没有人见过的奇怪的内存分配问题。我的代码是:

这是耶鲁的结构:

但是程序在循环的第一次迭代中在第一个相关的 printf 处出现段错误。

我是肯定的:matrix_elements 是一个整数(在我的测试用例中为 9) matrix_rows 是一个整数 A / IA / JA 都填充了正确的值(如果你在 printf 中将 yale->A 换成 A,它工作正常)。直接将数组调用到结构指针不会影响结果。Mallocing,callocing,而不是类型转换,都没有效果。

感谢 Xcode 和 gdb,我还可以在段错误的地方看到这一点。结构指针似乎指向数组

0 投票
4 回答
807 浏览

c - 写入二维数组导致分段错误

我的程序中有一个小的内存访问问题,我没有找到错误,也许有人可以帮助我。

我创建了一种新类型来存储 rgb 颜色值。这种类型看起来像:

在我的主程序中,我使用 calloc 创建了一个 2D 动态数组,以存储红色信息。

之后我调用我的函数,它读取颜色值以及谁应该将它们保存到数组中。该函数将数组作为参数。

在那个函数中,我尝试用

在这里我得到内存访问错误,我做错了什么?

编辑

嗨,首先对缺少的语言感到抱歉,我昨天有点累了:)。

为了理解,我创建了一个像素数组并且元素指向另一个像素数组?像[Point to another 1D array pixel]什么?

使用像素**pixelvalue = calloc(imginformation.width, sizeof(pixel *));,我从像素类型创建imginformation.width多个指针,每个指针都显示到像素,对吗?

如果我错了,如果您能再解释一下,那就太棒了。我真的很想了解它。

@carl-norum 你是什么意思:

“你不应该强制转换 calloc() 的返回值。这样做可以隐藏带有 #include 的错误,这些错误可能会回来咬你”。

? 我使用分配空间作为函数的参数,而不是返回值。

谢谢你的帮助!

格雷茨

0 投票
7 回答
2487 浏览

c - malloc 和 calloc

我知道这个问题可能被标记为 malloc 和 calloc 之间差异的重复,但我仍然想问它。

我知道 calloc 初始化内存块,这里我的问题不在于那部分。

我的问题是

malloc 的定义说它分配一个指定大小的内存块。

calloc 说它分配了多个内存块,每个内存块的大小相同。

一块内存和多块内存的这种分配是两者之间的真正区别吗?

因为我觉得我们可以使用 malloc 来做同样的事情,这可以通过 calloc 来完成。

例如 :

最终会分配 100 倍于 int 所需的内存。

0 投票
5 回答
394 浏览

c - c中的分配存储和二进制fwrite短裤

我正在尝试分配一个短裤块,将其写入文件,然后将其读回。但是写入文件的数据与输出的数据不匹配。我已将问题隔离为以下代码。任何想法我做错了什么?

0 投票
1 回答
6815 浏览

c - how can i know if calloc fails to initialize

I have read that calloc (malloc+init) will sometimes fail to init array with zero bytes (but will still return pointer to a malloc'ed array). but in documentation it does not specify that it will return NULL, is there a way to be sure that array was initialized to zero (better then going over array), if not what is the advantage of calloc over malloc ?

0 投票
1 回答
247 浏览

c - 在 C 中为字符串动态分配内存时,是否计算字符串 char 的 \0 结尾?

在 C 中为字符串动态分配内存时,是否计算字符串 char 的 \0 结尾?