我的印象是Objective-C中的alloc
(当我们调用[anyObject alloc]
实际上是在实现C函数malloc
和内存在堆中分配,但在任何地方都找不到答案。
另外,在搜索 alloc
时,我发现 alloc
在堆栈中分配内存。如果我没记错的话,alloc
在堆中分配内存来创建对象。
那么,alloc
和 malloc
(以及 alloc
)有什么区别呢?谁能总结一下?
最佳答案
alloc()
不是标准 C 库函数。一些较旧的编译器和库包含 <alloc.h>
提供一些内存分配功能的库,但这不是标准的。 Microsoft Visual C++ 运行时包括 Alloc()
函数有点类似于 malloc()
,但这也不是 C 标准的一部分。
malloc()
在进程堆上分配内存。使用 malloc()
分配的内存将保留在堆上,直到使用 free()
释放它.
alloca()
在当前函数的栈帧中分配内存。使用 alloca()
分配的内存当当前函数返回时,将从堆栈中删除。 alloca()
仅限于小额分配。
alloca()
的情况合适的都很少见。在几乎所有情况下,您都应该使用 malloc()
分配内存。
关于c - alloc、malloc 和 alloca — 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685851/