allocation des objets sur la pile ou bien sur le tas
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:
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");
} |