问题标签 [malloc]

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 投票
6 回答
3956 浏览

linux - 有些分配器是懒惰的吗?

我在 Linux 中编写了一个 malloc 内存的 C 程序,循环运行它,TOP 没有显示任何内存消耗。

然后我用那个内存做了一些事情,并且 TOP 确实显示了内存消耗。

当我 malloc 时,我是否真的“获取内存”,或者是否存在“惰性”内存管理,如果/当我使用它时,它只会给我内存?

(还有一个选项是TOP在我使用的时候才知道内存消耗,所以我不确定这个..)

谢谢

0 投票
4 回答
2118 浏览

c++ - 在 C++ 中分配和释放 char *

大家好,我遇到了一个我无法弄清楚的堆损坏错误。

上面的代码是我唯一一次在 _gcvt_s 和 pushFont() 中使用 c 指针,它只接受一个 char * 作为它的第一个参数,并将文本放在屏幕上。除此之外我不使用c。当我尝试在主循环之后释放 c(我认为我应该这样做)时,我收到一条错误消息,指出 Visual Studio 已获得堆错误(堆损坏)。

注释掉对 pushFont 的调用我仍然收到错误。

谁能向我解释为什么释放一个字符(我在堆上分配的 1 个字节)会给我一个堆损坏?

最后,我的主循环做了很多事情,我和一个伙伴正在用 WinSocket 制作乒乓球游戏,主体的其余部分是游戏的循环。我认为没有必要发帖,但如果有必要,我会用整个主循环更新我的帖子,但我相信我对 malloc() 和 free() 的理解刚刚结束。

谢谢大家,

0 投票
6 回答
19133 浏览

linux - malloc 是否会为 Linux(和其他平台)上的分配懒惰地创建支持页面?

如果我要在 Linux 上malloc(1024 * 1024 * 1024),malloc 实际上是做什么的?

我确定它为分配分配了一个虚拟地址(通过遍历空闲列表并在必要时创建一个新映射),但它实际上是否创建了 1 GiB 的交换页?或者它mprotect是地址范围并在您实际触摸它们时创建页面mmap

(我指定 Linux 是因为该标准对这些细节保持沉默,但我很想知道其他平台也能做什么。)

0 投票
1 回答
438 浏览

objective-c - Malloc'ed 字符串包含垃圾值

我刚刚将一个 Objective-C 库转换为一个 C 库,希望它能够跨平台。但是,在我将这件事送去处理之前,一切似乎都还不错。

正是在这一点上我得到了一个错误。

回顾一些修改,我注意到调试器中有一些东西。

就在这样的 malloc 字符串之后:

我会看到 theString 是 \x03 并且 *theString 是“3 '\003'”。

起初我认为这只是奇怪的记忆,因为我没有使用 strcat 或任何东西,但是那个奇怪的起始字符会继续存在,并且在我执行类似 malloc 的每个其他点重复出现。

就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只会做一些激烈的事情,比如切断第一个字符或其他东西。

如果我想安全地将其转换为 NSString,有人可以向我解释这是什么以及如何处理它吗?

0 投票
7 回答
7824 浏览

xcode - 我如何在 OS X 下覆盖 malloc()、calloc()、free() 等?

假设最新的 XCode 和 GCC,覆盖内存分配函数的正确方法是什么(我猜也是 operator new/delete)。调试内存分配器对于游戏来说太慢了,我只需要一些基本的统计数据,我可以自己做,影响最小。

我知道由于钩子在 Linux 中它很容易,十年前我在编写 HeapManager 时,这在 codewarrior 中是微不足道的。

可悲的是 smartheap 不再有 mac 版本。

0 投票
8 回答
6498 浏览

c - 递归释放 C 结构体

我有一个结构,它只包含指向我分配的内存的指针。有没有办法递归地释放作为指针的每个元素,而不是在每个元素上调用 free?

例如,假设我有这个布局:

在我的代码中,我 malloc 每个结构来创建一个模型:

像这样释放每个指针很简单:

有没有一种方法可以递归地遍历 mdl 中的指针,而不是在每个元素上调用 free ?

在实践中,只为每个编写 free() 几乎没有任何工作,但它会减少代码重复并有助于学习

0 投票
7 回答
2665 浏览

c - 为什么此代码在动态分配期间会崩溃?

我在下面有这个代码片段,它在“str”中的分配过程中崩溃,这是一个动态分配。

file_size 是非零、非负小于 140 的值

我正在使用 ARM。这实际上适用于我的英特尔电脑,但不适用于手臂机器。

0 投票
13 回答
77094 浏览

iphone - 如何找到 malloc “双重释放”错误的原因?

我正在用 Objective-C 编写一个应用程序,我收到了这个错误:

MyApp(2121,0xb0185000) malloc: *** 对象 0x1068310 错误: double free
*** 在 malloc_error_break 中设置断点进行调试

当我释放一个 NSAutoreleasePool 并且我无法弄清楚我要释放两次的对象时,就会发生这种情况。

我如何设置他的断点?

有没有办法知道这个“对象0x1068310”是什么?

0 投票
3 回答
14154 浏览

c - 关于 malloc 和 free 中的线程安全

可能重复:
Malloc 线程安全?

我听说 glibc malloc() 不是线程安全的,因为同时调用 malloc() 的进程的多个线程会导致未定义的行为。我的问题是,如果一个线程调用 free(),另一个线程会调用 malloc(),这也会导致未定义的行为吗?

0 投票
8 回答
2220 浏览

c - C malloc/free + fgets 性能

当我遍历文件 A 中的行时,我正在解析该行并将每个字符串 ( char*) 放入char**.

在一行的末尾,我运行一个过程,该过程包括打开文件 B,使用fgets,fseekfgetc从该文件中获取字符。然后我关闭文件 B。

我为每一行重复重新打开和重新关闭文件 B。

我想知道的是:

  1. malloc使用and是否会对性能产生重大影响free,因此我应该使用静态的东西myArray[NUM_STRINGS][MAX_STRING_WIDTH]而不是动态的东西char** myArray

  2. 打开和关闭文件 B 是否有显着的性能开销(从概念上讲,数千次)?如果我的文件 A 已排序,有没有办法让我fseek在文件 B 中“向后”移动,以重置我之前在文件 B 中的位置?

编辑结果证明,一种双重方法大大减少了运行时间:

  1. 我的文件 B 实际上是二十四个文件之一。而不是打开同一个文件 B1 一千次,然后打开 B2 一千次,等等。我打开文件 B1 一次,关闭它,B2 一次,关闭它等等。这将数千次fopen操作减少fclose到大约 24 次。

  2. 我曾经rewind()重置文件指针。

这产生了大约 60 倍的速度提升,这已经绰绰有余了。谢谢你指点我rewind()