Выделение памяти в стеке

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
DO>>  в С99 можно память в стеке выделять
DL>
DO>>  long long factorial(int n)
DO>>  {
DO>>    int array[n];
DO>>    for (int i=0; i<n; i++) array[i]=i+1;
DL>
DO>>    long long result=1;
DL>
DO>>    for (int i=0; i<n; i++) result*=array[i];
DO>>    return result;
DO>>  }
DL>
DL>  Зачем здесь вообще память выделять по массив ?
DL>
DO>>  кто-нибудь делал тесты насчет того насколько это
DO>>  эффективнее/неэффективнее malloc?
DL>
DL>  Выделение памяти на стеке всегда эффективнее всяких malloc из-за принципа
DL>  работы хипа.
DL>  Только вот временем жизни объекта на стеке так просто управлять не
DL>  получится, да и стека часто
DL> гораздо меньше, чем хипа.
про время жизни оно понятно :)

просто много задач где память выделяется подо что-то
потом это что-то вызывается с указателем на выделенную память,
потом результат обрабатывается и память освобождается :)
вот я и подумываю переползти чтоли на С99?


Выделение памяти в стеке
Hello Dmitry.

05 Sep 06 10:05, you wrote to me:

 DL>>
 DL>>  Выделение памяти на стеке всегда эффективнее всяких malloc из-за
 DL>> принципа работы хипа.
 DL>>  Только вот временем жизни объекта на стеке так просто управлять
 DL>> не получится, да и стека часто гораздо меньше, чем хипа.
 DO> про время жизни оно понятно :)

 DO> просто много задач где память выделяется подо что-то
 DO> потом это что-то вызывается с указателем на выделенную память,
 DO> потом результат обрабатывается и память освобождается :)
 DO> вот я и подумываю переползти чтоли на С99?

 В любом случае надо весьма хорошо представлять себе то, что делаешь,
 выделение на стеке любым способом
 int MyArray[32768];
 Может привести к весьма забавным последствиям в условиях сильно ограниченного
стека, тогда как
 malloc просто возвратит NULL.
 А вообще классики говорят, что все беды - от premature optimisation :)



Dmitry


Site Timeline