Ani*_*pta 19 c memory malloc memory-management alloca
我的印象是alloc在Objective-C中(当我们调用时[anyObject alloc]实际上是在实现C函数malloc并且内存在堆中分配,但找不到任何答案).
此外,在搜索时alloc,我发现了alloca哪些在堆栈中分配内存.如果我没有错,请alloc在堆中分配内存以创建对象.
那么alloc和malloc(和alloca)之间有什么区别?任何人都可以总结一下吗?
dus*_*uff 31
alloc()不是标准的C库函数.一些较旧的编译器和库包含一个<alloc.h>提供一些内存分配功能的库,但这不是标准的.Microsoft Visual C++运行时包含一个Alloc()有点类似的功能malloc(),但这也不是C标准的一部分.
malloc()在进程堆上分配内存.使用malloc()时分配的内存将保留在堆上,直到使用它为止free().
alloca()在当前函数的堆栈帧中分配内存.alloca()当前函数返回时,将使用分配的内存从堆栈中删除.alloca()仅限于小额分配.
情况下alloca()是合适的并不多见.在几乎所有情况下,您都应该使用malloc()分配内存.