Voilà le problème:J'ai un tableau qui s'initialise au lancemement du prog.Par la suite il s'initialise à nouveau en modifiant sa taille ou en la conservant.Mais j'ai un petit problème de mémoire que je n'ai pas avec delphi.Quand je change sa taille la 1ère fois le gestionnaire de tâches de windows me montre bien qu'il a créé les entrées (+32mo).Au 2ème passage(click du le bouton) en gardant le même nombre d'entrées la ram ne devrait pas changer mais le gestionnaire me rajoute +32mo.Les fois suivantes cela rentre dans l'ordre car la ram ne change plus de taille (en gardant le même nombre d'éléments avec "new").Voici une version simplifiée:
J'ai mis des points d'arrêts à l'endroit des commentaires.
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 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication2 { public partial class Form1 : Form { private static TV[] T; private struct TL { private Byte a, b, c; } private struct TV { private UInt32 a; private SByte b; private Int16 c; private SByte d; private TL e; private Byte f; } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) {//init:gestionnaire des tâches à 637mo ModifSize(32); }//ici le gestionnaire des tâches indique 669 (+32mo):normal private void button1_Click(object sender, EventArgs e) { ModifSize(32);//1er click:gestionnaire des tâches à 669mo }//ici le gestionnaire des tâches indique 701 (+32mo):anormal private void ModifSize(UInt32 Size) { UInt32 Entries = Convert.ToUInt32((Size * 1024) * 1024 / 17); T = new TV[Entries]; } } }
Par la suite lors des clicks sur le bouton la ram ne bouge plus.Donc je voudrais savoir pourquoi le programme occupe 64mo en mémoire alors qu'il ne devrait en occuper que 32mo?
Merci de m'éclairer.
Partager