вернуть локальный указатель

struct node
{
  Item item; node *l, *r;
  node(Item x) {item = x; l = 0; r = 0;}
};

typedef node* link;
link max(Item a[], int l, int r)
{
    int m = (l+r)/2;
    link x = new node(a[m]);
    if (l==r) return x; // return a local pointer
    x->l = max(a, l, m);
    x-r = max(a, m+1, r);
    Item u = x->l->item, v = x->r->item;
    if (u>v) x->item = u;
    else x->item=v;

    return x;    // return a local pointer
}

Это фрагмент кода из "Алгоритм в c++" Роберта Седжвика, стр. 252, программа 5.19. А в функции max()возвращаемая переменная указатель, который создается внутри функции.

На мой взгляд, возвращение локального указателя не разрешено в c/c++. Поэтому мой вопрос заключается в том, что "нормально ли писать такую ​​функцию"? Я не могу поверить в такое классическая книга ошибаюсь вот так.Или я не так понял принцип? Пожалуйста помоги. Спасибо.

7
задан Mysticial 20 March 2012 в 00:09
поделиться