gpt4 book ai didi

c - alloc、malloc 和 alloca — 有什么区别?

转载 作者:IT王子 更新时间:2023-10-28 23:29:55 25 4
gpt4 key购买 nike

我的印象是Objective-C中的alloc(当我们调用[anyObject alloc]实际上是在实现C函数malloc和内存在堆中分配,但在任何地方都找不到答案。

另外,在搜索 alloc 时,我发现 alloc 在堆栈中分配内存。如果我没记错的话,alloc 在堆中分配内存来创建对象。

那么,allocmalloc(以及 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com