alloca()在堆栈上而不是在堆上分配内存,如同的情况一样malloc().所以,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放分配的内存malloc()是一个令人头痛的问题,如果不知何故错过会导致各种内存问题.
alloca()尽管有上述特征,为什么不鼓励使用?
有没有办法在堆栈而不是堆上分配内存?我找不到一本好书,这里有人有个主意吗?
我想知道堆栈区域上的运行时内存分配以及它与堆区域上的运行时内存分配的不同之处.
我知道如何使用库函数分配内存.
#include<alloca.h> void *alloca(size_t size); //(for runtime memory on stack)
#include<stdlib.h> void *malloc(size_t size); //(for run time memory on heap)
Run Code Online (Sandbox Code Playgroud)
我也知道如果我们使用alloca函数,我们不需要显式释放该内存,因为它与堆栈相关联,它会自动释放.
我想知道哪些系统调用与alloc和malloc相关联,以及它们如何在两者中工作.