60得票4回答
使用malloc动态创建一个字符串数组

我正在尝试使用 malloc 在C语言中创建一个字符串数组。该数组将会在运行时改变所能容纳的字符串数量,但是每个字符串的长度都不变。 我已经尝试了下面的代码,但是遇到了困难,请问有什么指导可以提供吗?感激不尽!#define ID_LEN 5 char *orderedIds; int i;...

59得票7回答
malloc vs mmap in C

我建立了两个程序,一个使用 malloc,另一个使用 mmap。使用 mmap 的执行时间比使用 malloc 的时间要少得多。 例如,当你使用 mmap 时,你避免了对系统的读/写调用,并且内存访问更少。但是,除此之外,在使用 mmap 而不是 malloc 时还有其他优点吗? 非常感谢。

59得票4回答
Xcode Guard Malloc和设备上调试:未找到'libgmalloc.dylib'图像

我在 Xcode(编辑 Scheme -> 选项)中启用了内存检查,现在当我在设备上进行调试时,出现了以下提示:dyld: could not load inserted library '/usr/lib/libgmalloc.dylib' because image not found。我...

59得票5回答
“calloc”中的第一个“c”代表什么?

一位学生提出了这个问题,我不确定答案。 猜测包括:“计算”,“清除”,“分块”,“完成”等。 标准库文档没有解释它所代表的含义,也没有类似命名的函数能够指示模式。是否有人知道实际词源并可能有权威参考资料支持?

58得票5回答
内存分配的时间复杂度

使用new、malloc等动态内存分配的时间复杂度是多少?我对内存分配器的实现知之甚少,但我认为答案取决于具体的实现方式。因此,请就一些较常见的情况/实现方式回答。 编辑: 我模糊地记得听说堆内存分配在最坏情况下没有上限,但我真正感兴趣的是平均/典型情况。

57得票7回答
在C++中,“new”和“malloc”以及“calloc”的区别是什么?

"new"、"malloc"和"calloc"等函数有何区别? 除了"new"以外,什么时候需要用到其他函数? 它们之间是否有互相实现的情况?

57得票11回答
C API 设计:谁应该分配内存?

在 C API 中,适当/首选的内存分配方式是什么? 一开始我可以看到两种选项: 1)让调用者处理所有(外部)内存管理:myStruct *s = malloc(sizeof(s)); myStruct_init(s); myStruct_foo(s); myStruct_destro...

57得票3回答
在多线程环境下,malloc如何工作?

对于x86-64平台和Linux操作系统,典型的malloc函数是否在开始时天真地锁定了一个互斥锁,并在完成后释放它,还是以更细粒度的方式锁定互斥锁,从而减少并发调用时的锁竞争? 如果确实是以第二种方式执行,那么它是如何做到的?

57得票10回答
如何动态分配内存空间以获取用户输入的字符串?

我想使用C程序从用户读取输入。我不想使用类似数组的东西。char names[50]; 因为如果用户输入长度为10的字符串,那么剩余的空间就被浪费了。 如果我使用字符指针,就像这样:char *names; 然后我需要以这样的方式分配内存:names = (char *)malloc(20 ...

56得票7回答
零大小的malloc

非常简单的问题,我写了下面这个程序:#include <stdlib.h> int main(int argc, char ** argv) { void * ptr; ptr = malloc(0); free(ptr); } 它在我的机器上没有段错误。这...