Вопрос

I was revising C and came across to alloca/free functions which is described as allocating storage on a stack like space. Is this same as the malloc/free ? or this is something different ? Thanks.

Это было полезно?

Решение

I think you mean alloca which is used to allocate memory on the stack. And yes, this is different from malloc and free which allocate on the heap.

Don't attempt to free memory allocated with alloca because it is automatically freed when the function that calls alloca returns to its caller.

Using alloca and/or C99 variable length arrays can be a risky business because you can readily overflow the stack if you use these tools imprudently.

Другие советы

malloc, calloc and realloc functions allocate space on the heap.

free function "frees" space previously allocated by these functions.

Adding some extra information to an old answer.

malloc() can be used for few reason, some of them are

  1. Dynamic memory allocation
  2. Scope (When one needs memory that stays between function calls)

But, one extra work that gets added with malloc() is we have to explicitly free() the allocated memory.

So, in order to use only the Dynamic memory allocation feature, and to avoid the overhead of free(), one can use alloca() in their program. This is made possible because memory is allocated on the stack (as mentioned by other answers) when alloca() is used.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top