Date: Mon, 14 Aug 2023 16:31:09 +0200
Hello Frederick,
On 2023-08-14 13:44, Frederick Virchanza Gotham via Std-Proposals wrote:
>
> And also how about we standardise the function "alloca" which allows
> us to allocate bytes on the stack? For those not familiar with
> 'alloca', here's the Linux manual entry:
>
> https://man7.org/linux/man-pages/man3/alloca.3.html
>
> And here's a quick excerpt from that manual page
>
> The alloca() function allocates size bytes of space in the stack
> frame of the caller. This temporary space is automatically freed
> when the function that called alloca() returns to its caller.
> Because it allocates from the stack, it's faster than malloc
> and free. In certain cases, it can also simplify memory
> deallocation in applications that use longjmp or siglongjmp.
Now that C has VLAs, alloca(3) is being removed from many projects.
In most cases, there's no guarantee that the size will fit in the
stack, and so one should use malloc(3). In the few cases where the
size is known to be small, VLAs are preferable. In fact, this is
exactly what glibc is doing at the moment: replace all calls to
alloca(3) by either malloc(3) or VLAs.
Why would you standardize a (builtin) function that nobody wants to
use?
Alex
On 2023-08-14 13:44, Frederick Virchanza Gotham via Std-Proposals wrote:
>
> And also how about we standardise the function "alloca" which allows
> us to allocate bytes on the stack? For those not familiar with
> 'alloca', here's the Linux manual entry:
>
> https://man7.org/linux/man-pages/man3/alloca.3.html
>
> And here's a quick excerpt from that manual page
>
> The alloca() function allocates size bytes of space in the stack
> frame of the caller. This temporary space is automatically freed
> when the function that called alloca() returns to its caller.
> Because it allocates from the stack, it's faster than malloc
> and free. In certain cases, it can also simplify memory
> deallocation in applications that use longjmp or siglongjmp.
Now that C has VLAs, alloca(3) is being removed from many projects.
In most cases, there's no guarantee that the size will fit in the
stack, and so one should use malloc(3). In the few cases where the
size is known to be small, VLAs are preferable. In fact, this is
exactly what glibc is doing at the moment: replace all calls to
alloca(3) by either malloc(3) or VLAs.
Why would you standardize a (builtin) function that nobody wants to
use?
Alex
Received on 2023-08-14 14:31:12