问题标签 [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.
linux - 有些分配器是懒惰的吗?
我在 Linux 中编写了一个 malloc 内存的 C 程序,循环运行它,TOP 没有显示任何内存消耗。
然后我用那个内存做了一些事情,并且 TOP 确实显示了内存消耗。
当我 malloc 时,我是否真的“获取内存”,或者是否存在“惰性”内存管理,如果/当我使用它时,它只会给我内存?
(还有一个选项是TOP在我使用的时候才知道内存消耗,所以我不确定这个..)
谢谢
c++ - 在 C++ 中分配和释放 char *
大家好,我遇到了一个我无法弄清楚的堆损坏错误。
上面的代码是我唯一一次在 _gcvt_s 和 pushFont() 中使用 c 指针,它只接受一个 char * 作为它的第一个参数,并将文本放在屏幕上。除此之外我不使用c。当我尝试在主循环之后释放 c(我认为我应该这样做)时,我收到一条错误消息,指出 Visual Studio 已获得堆错误(堆损坏)。
注释掉对 pushFont 的调用我仍然收到错误。
谁能向我解释为什么释放一个字符(我在堆上分配的 1 个字节)会给我一个堆损坏?
最后,我的主循环做了很多事情,我和一个伙伴正在用 WinSocket 制作乒乓球游戏,主体的其余部分是游戏的循环。我认为没有必要发帖,但如果有必要,我会用整个主循环更新我的帖子,但我相信我对 malloc() 和 free() 的理解刚刚结束。
谢谢大家,
linux - malloc 是否会为 Linux(和其他平台)上的分配懒惰地创建支持页面?
如果我要在 Linux 上malloc(1024 * 1024 * 1024)
,malloc 实际上是做什么的?
我确定它为分配分配了一个虚拟地址(通过遍历空闲列表并在必要时创建一个新映射),但它实际上是否创建了 1 GiB 的交换页?或者它mprotect
是地址范围并在您实际触摸它们时创建页面mmap
?
(我指定 Linux 是因为该标准对这些细节保持沉默,但我很想知道其他平台也能做什么。)
objective-c - Malloc'ed 字符串包含垃圾值
我刚刚将一个 Objective-C 库转换为一个 C 库,希望它能够跨平台。但是,在我将这件事送去处理之前,一切似乎都还不错。
正是在这一点上我得到了一个错误。
回顾一些修改,我注意到调试器中有一些东西。
就在这样的 malloc 字符串之后:
我会看到 theString 是 \x03 并且 *theString 是“3 '\003'”。
起初我认为这只是奇怪的记忆,因为我没有使用 strcat 或任何东西,但是那个奇怪的起始字符会继续存在,并且在我执行类似 malloc 的每个其他点重复出现。
就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只会做一些激烈的事情,比如切断第一个字符或其他东西。
如果我想安全地将其转换为 NSString,有人可以向我解释这是什么以及如何处理它吗?
xcode - 我如何在 OS X 下覆盖 malloc()、calloc()、free() 等?
假设最新的 XCode 和 GCC,覆盖内存分配函数的正确方法是什么(我猜也是 operator new/delete)。调试内存分配器对于游戏来说太慢了,我只需要一些基本的统计数据,我可以自己做,影响最小。
我知道由于钩子在 Linux 中它很容易,十年前我在编写 HeapManager 时,这在 codewarrior 中是微不足道的。
可悲的是 smartheap 不再有 mac 版本。
c - 递归释放 C 结构体
我有一个结构,它只包含指向我分配的内存的指针。有没有办法递归地释放作为指针的每个元素,而不是在每个元素上调用 free?
例如,假设我有这个布局:
在我的代码中,我 malloc 每个结构来创建一个模型:
像这样释放每个指针很简单:
有没有一种方法可以递归地遍历 mdl 中的指针,而不是在每个元素上调用 free ?
(在实践中,只为每个编写 free() 几乎没有任何工作,但它会减少代码重复并有助于学习)
c - 为什么此代码在动态分配期间会崩溃?
我在下面有这个代码片段,它在“str”中的分配过程中崩溃,这是一个动态分配。
file_size 是非零、非负小于 140 的值
我正在使用 ARM。这实际上适用于我的英特尔电脑,但不适用于手臂机器。
iphone - 如何找到 malloc “双重释放”错误的原因?
我正在用 Objective-C 编写一个应用程序,我收到了这个错误:
MyApp(2121,0xb0185000) malloc: *** 对象 0x1068310 错误: double free
*** 在 malloc_error_break 中设置断点进行调试
当我释放一个 NSAutoreleasePool 并且我无法弄清楚我要释放两次的对象时,就会发生这种情况。
我如何设置他的断点?
有没有办法知道这个“对象0x1068310”是什么?
c - 关于 malloc 和 free 中的线程安全
可能重复:
Malloc 线程安全?
我听说 glibc malloc() 不是线程安全的,因为同时调用 malloc() 的进程的多个线程会导致未定义的行为。我的问题是,如果一个线程调用 free(),另一个线程会调用 malloc(),这也会导致未定义的行为吗?
c - C malloc/free + fgets 性能
当我遍历文件 A 中的行时,我正在解析该行并将每个字符串 ( char*
) 放入char**
.
在一行的末尾,我运行一个过程,该过程包括打开文件 B,使用fgets
,fseek
并fgetc
从该文件中获取字符。然后我关闭文件 B。
我为每一行重复重新打开和重新关闭文件 B。
我想知道的是:
malloc
使用and是否会对性能产生重大影响free
,因此我应该使用静态的东西myArray[NUM_STRINGS][MAX_STRING_WIDTH]
而不是动态的东西char** myArray
?打开和关闭文件 B 是否有显着的性能开销(从概念上讲,数千次)?如果我的文件 A 已排序,有没有办法让我
fseek
在文件 B 中“向后”移动,以重置我之前在文件 B 中的位置?
编辑结果证明,一种双重方法大大减少了运行时间:
我的文件 B 实际上是二十四个文件之一。而不是打开同一个文件 B1 一千次,然后打开 B2 一千次,等等。我打开文件 B1 一次,关闭它,B2 一次,关闭它等等。这将数千次
fopen
操作减少fclose
到大约 24 次。我曾经
rewind()
重置文件指针。
这产生了大约 60 倍的速度提升,这已经绰绰有余了。谢谢你指点我rewind()
。