Thread View: pl.comp.lang.c
8 messages
8 total messages
Started by Borneq
Wed, 12 Oct 2016 22:29
alloca() szybszy niż malloc?
Author: Borneq
Date: Wed, 12 Oct 2016 22:29
Date: Wed, 12 Oct 2016 22:29
7 lines
1099 bytes
1099 bytes
http://man7.org/linux/man-pages/man3/alloca.3.html 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. czy ktoś to stosował?
Re: alloca() szybszy niż malloc?
Author: M.M.
Date: Thu, 13 Oct 2016 08:14
Date: Thu, 13 Oct 2016 08:14
13 lines
1705 bytes
1705 bytes
On Thursday, October 13, 2016 at 12:29:29 AM UTC+2, Borneq wrote: > http://man7.org/linux/man-pages/man3/alloca.3.html > > 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. > > czy ktoś to stosował? Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to powinno być bardzo szybkie. Pozdrawiam
Re: alloca() szybszy niż malloc?
Author: Borneq
Date: Thu, 13 Oct 2016 16:03
Date: Thu, 13 Oct 2016 16:03
5 lines
1144 bytes
1144 bytes
W dniu 13.10.2016 o 10:14, M.M. pisze: > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to > powinno być bardzo szybkie. A jak z mieszanym wołaniem alloca i malloc?
Re: alloca() szybszy niż malloc?
Author: godek.maciek
Date: Thu, 13 Oct 2016 17:39
Date: Thu, 13 Oct 2016 17:39
13 lines
1853 bytes
1853 bytes
W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał: > W dniu 13.10.2016 o 10:14, M.M. pisze: > > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to > > powinno być bardzo szybkie. > > A jak z mieszanym wołaniem alloca i malloc? nie powinno być problemó. malloc alokuje na stercie. [alloca za to może doprowadzić do przepełnienia stosu, choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz] no i przy malloku musisz pamiętać, żeby robić "free", zaś przy alloce nie doprowadzisz do wycieku
Re: alloca() szybszy niż malloc?
Author: Borneq
Date: Fri, 14 Oct 2016 07:25
Date: Fri, 14 Oct 2016 07:25
12 lines
1656 bytes
1656 bytes
W dniu 13.10.2016 o 19:39, godek.maciek@gmail.com pisze: > nie powinno być problemó. malloc alokuje na stercie. > [alloca za to może doprowadzić do przepełnienia stosu, > choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz] > > no i przy malloku musisz pamiętać, żeby robić "free", > zaś przy alloce nie doprowadzisz do wycieku To alloca allokuje na stosie? myślałem że też na stercie, tylko w stosowy sposób. To jaka różnica między tym a zmienną lokalną? I stos jest zwykle mały (do 1 MiB w porównaniu np. z 12 GB pamięci dostępnej z 16 GiB ramu)
Re: alloca() szybszy niż malloc?
Author: Piotr Gałka
Date: Fri, 14 Oct 2016 08:57
Date: Fri, 14 Oct 2016 08:57
15 lines
1481 bytes
1481 bytes
W dniu 14-10-2016 o 09:25, Borneq pisze:
>
> To alloca allokuje na stosie? myślałem że też na stercie, tylko w
> stosowy sposób. To jaka różnica między tym a zmienną lokalną?
Nigdy nie używałem alloca, ba, nawet nie wiedziałem, że istnieje taka
możliwość.
Tak trudno wydedukować różnicę?
void fun(int size)
{
char tab1[size]; // Error
char *tab2=(char*)alloca(size); // OK
}
P.G.
Re: alloca() szybszy niż malloc?
Author: M.M.
Date: Fri, 14 Oct 2016 09:26
Date: Fri, 14 Oct 2016 09:26
18 lines
2405 bytes
2405 bytes
On Thursday, October 13, 2016 at 7:39:19 PM UTC+2, godek....@gmail.com wrote: > W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał: > > W dniu 13.10.2016 o 10:14, M.M. pisze: > > > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to > > > powinno być bardzo szybkie. > > > > A jak z mieszanym wołaniem alloca i malloc? > > nie powinno być problemó. malloc alokuje na stercie. > [alloca za to może doprowadzić do przepełnienia stosu, > choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz] > > no i przy malloku musisz pamiętać, żeby robić "free", > zaś przy alloce nie doprowadzisz do wycieku Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę ramki stosu: [allocates size bytes of space in the STACK frame of the caller.]
Re: alloca() szybszy niż malloc?
Author: M.M.
Date: Fri, 14 Oct 2016 09:28
Date: Fri, 14 Oct 2016 09:28
32 lines
2796 bytes
2796 bytes
On Friday, October 14, 2016 at 11:26:27 AM UTC+2, M.M. wrote: > On Thursday, October 13, 2016 at 7:39:19 PM UTC+2, godek....@gmail.com wrote: > > W dniu czwartek, 13 października 2016 18:03:56 UTC+2 użytkownik Borneq napisał: > > > W dniu 13.10.2016 o 10:14, M.M. pisze: > > > > Nie stosowałem. Jeśli faktycznie to tylko podnosi ramkę stosu, to > > > > powinno być bardzo szybkie. > > > > > > A jak z mieszanym wołaniem alloca i malloc? > > > > nie powinno być problemó. malloc alokuje na stercie. > > [alloca za to może doprowadzić do przepełnienia stosu, > > choć pewnie dużo tutaj zależy od konkretnej maszyny, na którą piszesz] > > > > no i przy malloku musisz pamiętać, żeby robić "free", > > zaś przy alloce nie doprowadzisz do wycieku > > Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę > ramki stosu: > [allocates size bytes of space in the STACK frame of the caller.] Przepraszam, powyższa odpowiedź miała być do tego cytatu: > To alloca allokuje na stosie? myślałem że też na stercie, tylko w > stosowy sposób. To jaka różnica między tym a zmienną lokalną? I stos > jest zwykle mały (do 1 MiB w porównaniu np. z 12 GB pamięci dostępnej z > 16 GiB ramu) ] Z opisu jaki wkleiłeś wynika że allokuje poprzez zmianę ramki stosu: [allocates size bytes of space in the STACK frame of the caller.]
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads