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

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

Translate This Thread From Russian to

Threaded View
в С99 можно память в стеке выделять

nb:[/home/dimka/tmp]$ > test.c
#include <stdio.h>

long long factorial(int n)
{
  int array[n];
  for (int i=0; i<n; i++) array[i]=i+1;

  long long result=1;

  for (int i=0; i<n; i++) result*=array[i];
  return result;
}


int main(int argc, char **argv)
{
  printf("factorial %d=%lld\n"
      "factorial %d=%lld\n",
      10, factorial(10),
      15, factorial(15));
}
^D
nb:[/home/dimka/tmp]$ gcc -std=c99 test.c -o test
nb:[/home/dimka/tmp]$ ./test
factorial 1036%28800
factorial 1513%07674368000


кто-нибудь делал тесты насчет того насколько это
эффективнее/неэффективнее malloc?



Выделение памяти в стеке
Привет, Dmitry !


 27 Aug 06 , 13:41  Dmitry E. Oboukhov писал к All:

DEO> long long factorial(int n)
DEO> {
DEO>   int array[n];
[skip]

DEO> кто-нибудь делал тесты насчет того насколько это
DEO> эффективнее/неэффективнее malloc?

А зачем тесты? :)
если у нас стек программно-доступен, то автоматические переменные будут
быстрее, но если захапать больше стека чем его физически есть, то будет плохо.
маллок он хоть и медленнее в общем случае, но возвращает код возврата, который
можно проверить и в случае недостатка памяти сделать что-нибудь осмысленное.

.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Я матернулся чтоб узнат не матэрнулас ли оно чтоб узнат не матэрнулся ли я

Site Timeline