Bonjour

Le programme qui suit alloue les objets de la classe Twin sur la pile ou bien sur le tas,
suivant l'emploi qui est fait de new dans le programme main.
Y a t il un moyen de faire dire aux compilateurs (g++, icpc) les lignes o� l'allocation aura lieu sur la pile,
car dans ce cas le pointeur stock� dans le _casier sera invalide.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
#include <iostream>
 
class Base {
};
 
class Range {
  private:
    Base* _val;
  public:
    Range(Base* val): _val(val){};
};
 
class Inter : public Base {
  private:
    int more_properties;
  public:
};
 
class Twin : public Inter {
  private:
    Range _casier;
    char const* const _val;
  public:
    Twin(char const* const val): _casier(Range(this)), _val(val)
{
      std::cerr << val << " " << (long)this << std::endl;
}
};
 
int main(int argc, char **argv) {
  Twin("a");
  new Twin("b");
  Twin* cc = new Twin("c");
}