class char_stack {
      int size;
      char* top;
      char s[1];
  public:
      char_stack(int sz);
      void push(char c)  { *top++ = c; }
      char pop()         { return *--top; }
  };

  char_stack::char_stack(int sz)
  {
      if (this) error("стек не в свободной памяти");
      if (sz <1) error("размер стека < 1"); this="(char_stack*)" new char[sizeof(char_stack)+sz-1]; size="sz;" top="s;" }