问题标签 [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.
gcc - 在calloc中崩溃
我正在尝试调试我编写的程序。我跑了进去gdb
,我设法SIGABRT
从里面抓住了一个calloc()
。我完全不知道这是怎么出现的。它可能是一个错误,gcc
甚至是libc
?
更多细节:我的程序使用 OpenMP。我以valgrind
单线程模式运行它,没有错误。我也mmap()
用来加载一个 40GB 的文件,但我怀疑这是否相关。在里面gdb
,我正在运行 30 个线程。几次相同的运行(相同的输入和 CL)正确完成,直到我发现有问题的运行。从表面上看,这表明可能存在某种类型的竞争条件。但是,它的SIGABRT
来源calloc()
是我无法控制的。这是一些相关的gdb
输出:
该函数my_calloc()
只是一个包装器,但问题不在那里,因为真正的calloc()
调用看起来是合法的。这些是在 shell 中设置的限制:
该程序没有内存不足,它在一台有 256GB 可用空间的机器上使用 41GB:
g++ (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
我使用, 和 flags编译-g -O2 -DNDEBUG -mmmx -msse -msse2 -fopenmp -Wall -Wno-deprecated -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
。
编辑:我得到的详细错误信息如下。我截断了它,未显示的行与最后 5 行相似。
Edit2:我为所有在看似“非平凡”的地方(10/30)停止的线程添加了线程信息。
arrays - Linux清空堆内存需要多长时间
我想知道......假设我已经动态分配了一个数组
或类似的东西。此外,如果 n 是一个非常大的数字(~ 100 万,为了争论),如果我最后没有清除堆内存,Linux 需要多长时间free()
?我知道任何操作系统都会四处走动并清除未释放和未使用的堆内存区域。但我认为这需要多长时间取决于操作系统。
c - 读写动态分配的内存
我有一些包含以下部分的代码:
我得到了这部分代码的输出:
所以,问题来了——如果“objects”变量不为零,那么为什么“objects+k”为零?当我制作:
我得到如下行:
这是为什么?想到那件事,我已经脑袋坏掉了。
c - calloc 失败并返回 NULL
在我们的应用程序模块之一中, calloc() 失败并返回 NULL。它尝试分配的内存量是 9292 字节的结构。操作系统是 AIX 7.1 并运行 VIOS 2.2.1.3。
这台机器有 2+GB 内存,似乎没有内存不足的问题。相同的应用程序模块在其他一个盒子上运行良好,它与有问题的盒子具有相同的配置。以下是两个盒子的内存片段,它们是相同的!
工作箱:
有问题的盒子:
我一无所知,因为无法真正弄清楚为什么 calloc() 甚至在这个盒子上的 9292 字节都失败了。
谢谢
c - 返回类型为二维数组
以下代码在编译时给出了函数 fun2() 冲突类型的错误。
但是,这段代码没有 -
但是,这两个程序都在做同样的任务。编译错误背后的原因是什么?
c - free() 失败
如果我像这样在循环中分配内存
稍后在代码中的某个时候,我会像这样释放内存:
是否有可能free()
不释放内存并因此导致分配更多内存?我在每个file
循环中分配和释放一次内存。此外,nptperf[file]
通常在 1-3 百万点左右,并且ngridx = ngridy = 100
.
该程序适用于ngridx = ngridy = 80
和更少,但在100
.
c - 是否有必要对 malloc 和 calloc 进行类型转换
可能重复:
我要转换 malloc 的结果吗?
我在谷歌上搜索找出malloc和calloc类型转换的原因。但是,我只发现malloc的类型转换是不必要的,因为它返回 void 指针,但是calloc呢。这也是calloc的原因???
现在,如果我们回到第一点,关于malloc和calloc的返回值。然后,我发现,两者都返回了分配的空间。所以,我在这里有点困惑。所以,我的问题是
malloc和calloc的返回值是多少
是否有必要对malloc和calloc进行类型转换。为什么?
c - 使用 malloc() 进行多个输入?
好吧,我知道malloc
或者calloc
可以用于动态分配,但是作为 CI 的新手,不知道如何使用我分配的用于输入多个输入的内存,例如 TC++ 示例,我们有这个代码
在这样的代码中,我们将 Hello 放置到我们现在分配的内存中,这应该会给我们留下 4 个更多的字符空间,我们应该如何向这些空间添加数据。
当用户被问及输入数量时,我想实现这个想法,他让他说 10 或 100,然后程序输入数据并存储它们并将该数据打印到屏幕上。
c - malloc 和其他相关函数
我有一个名为“ArrayA”的数组,它充满了整数,但我想在每次满足条件时在数组末尾添加另外 5 个单元格。我该怎么做?(互联网不是很有帮助)
objective-c - 启用 ARC 的泄漏
使用 C 数组时,我的代码似乎泄漏了,我不知道为什么。
我LeakyClass
用这个打电话:
Instruments 指向传递给 的每个值LeakyClass
以添加到数组 1。在此示例中object
,@"example"
和[NSURL URLWithString:exampleString]
。Instruments 也指向calloc
s _array1
,_array2
但我将它们都释放在dealloc
.
我错过了什么吗?