Bonjour a tous, pour nous aider a comprendre la theorie, l'ecole nous a donne un code ainsi que des questions qui ne sont pas a rendre, mais qu'ils nous ont fortement recommandes pour nous aider a comprendre de facon poussee la base du C++.
Voici le code:
Les questions sont les suivantes:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 class D { }; class C { public: C(int k) : arrSize(k) { arr = new int[k]; } ~C() { delete arr; } private: int arrSize; int *arr; }; class B { public: C& getC() { C c(8); return c; } }; C glob_C(8); D* glob_D = new D[8]; class A { public: A() { B b; _c = b.getC(); } D _d; C _c; }; int main() { A a; return 0; }
a/ Quelle est l'erreur qui a ete laissee dans le destructeur de la classe C?
b/ La fonction getC entraine un probleme de memoire: expliquez pourquoi?
c/ Le constructeur de la classe A entraine une erreur de compilation: expliquez pourquoi?
d/ Identifiez tous les appels au constructeur par defaut de la classe D.
Pour chacun des appels, notez :
1/ la ligne d'ou se fait l'appel
2/ combien d'appels sont executes?
3/ Quand est execute l'appel (debut d'execution du programme, apres l'execution d'une methode precise, etc..)
e/ Dans le code il y a une fuite de memoire: identifiez-la.
f/ Pour cette question nous supposerons que les problemes des questions precedentes ont tous ete resolus.
Pour chacun des objets: glob_C(31), b(38), arr(10) donner:
- Endroit ou l'allocation de la memoire s'effectue (constructeur de telle classe, debut du programme...)
- nom de l'objet (nom de la variable)
- type de memoire allouee (heap/stack/global space)
- endroit ou s'effectue la liberation de memoire (destructeur, fin d'execution du programme ...)
Voila j'ai essaye tant que possible d'y repondre mais j'aimerais avoir les reponses de personnes plus experimentees pour etre bien sur.
Merci d'avance a tous les courageux qui voudront bien m'aider!!
Partager