24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
1

Очистка памяти

23.07.2012, 08:28. Показов 6660. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Скажите пожалуйста, как очищать память после вычислений,если программа не закрыта, но нужно очистить память для последующих вычислений?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 08:28
Ответы с готовыми решениями:

Очистка памяти от AnsiString
Есть динамический массив строк Trace: array of AnsiString; По ходу исполнения процедуры массив...

MSXML и очистка памяти
Добрый день. Есть поток в котором используется IXMLDOMDocument(CoDomDocument60.create) Создается...

Очистка памяти в программе
Здравствуйте. Есть программа, которая заменяет определенные слова в текстовом файле. Она рабочая,...

Очистка памяти в процедуре
Всем привет! Скажите, надо ли очищать память в данном примере? procedure ttt(tss:tstringlist);...

11
19 / 19 / 7
Регистрация: 17.10.2008
Сообщений: 97
23.07.2012, 08:31 2
Зависит от того, где и как вы хранили вычисления, что вычисляли, и каковы последующие вычисления...
Пожалуйста, реальную задачу в студию...
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
23.07.2012, 08:43  [ТС] 3
хорошо. Свой код разработанный мной не могу вынести на публичное рассмотрение, но покажите на коде или выложите ссылку на сайт, где это можно прочитать! Пожалуйста
0
117 / 117 / 30
Регистрация: 21.10.2011
Сообщений: 308
23.07.2012, 08:47 4
по максимуму уменьшить количество глобальных переменных, все вычисления вести в функциях, получая от них только результат, или объекты клепать.
1
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
23.07.2012, 10:03 5
Цитата Сообщение от crashc Посмотреть сообщение
Свой код разработанный мной не могу вынести на публичное рассмотрение
Чего мы там не видили

Где хранятся они после вычислений?
0
Заблокирован
23.07.2012, 10:06 6
если было что то вроде
Delphi
1
SetLength, New, GetMem,TКакойТоТип.Create
нужно их чистить
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
23.07.2012, 14:14  [ТС] 7
MansMI, объясните мне, что есть что в приведенном коде выше!
0
Заблокирован
23.07.2012, 15:29 8
надо посмотреть есть ли в коде то что я перечислил, все эти подпрограммы создают динамические переменные, массивы, объекты и просто захватывают куски памяти
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
23.07.2012, 17:18 9
crashc,
Вы хотя бы покажите как вы выделяете память!?
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
23.07.2012, 20:46  [ТС] 10
У меня обычным образом объявляются переменные!
Delphi
1
2
 var a : integer;
X : array [ 1..10000] of integer;
0
12 / 7 / 2
Регистрация: 08.06.2012
Сообщений: 86
23.07.2012, 21:15 11
Цитата Сообщение от crashc Посмотреть сообщение
У меня обычным образом объявляются переменные!
ну значит они так и будут в памяти,если глобальные
0
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
23.07.2012, 22:56 12
У меня обычным образом объявляются переменные!
видимо вы не знакомы с TIntList

Delphi
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
unit IntList;
 
// модуль числовго листа. Версия 1.1
 
interface
uses SysUtils,  Variants, Classes ;
 
type
  TIntList = class (TList)
  private
    procedure writeItemInt(index: integer; const Value: integer);
    function readItemInt(index: integer): integer;
    function readText: string;
    procedure writeText(const Value: string);
  public
    procedure Add(value:integer); overload;
    procedure Insert(index:integer; value: integer); overload;
    function indexOf(value:integer):integer; overload;
    procedure Sort;
    procedure CreateRange(min,max:integer);
    procedure CreateRangeReverse(min,max:integer);
    procedure LoadFromFile(txtfilename:string);
    procedure SaveToFile(txtfilename:string);
    property itemInt[index:integer]:integer read readItemInt write writeItemInt; default;
    property Text: string read readText write writeText;
    destructor Destroy; override;
  end;
 
implementation
 
{ TIntList }
 
procedure TIntList.Add(value: integer);
begin
  Add(Pointer(value));
end;
 
procedure TIntList.CreateRange(min, max: integer);
var i:integer;
begin
  Clear;
  for i := min to max do
   Add(i);
end;
 
procedure TIntList.CreateRangeReverse(min, max: integer);
var i:integer;
begin
  Clear;
  for i := max downto min do
   Add(i);
end;
 
destructor TIntList.Destroy;
begin
  //if Indexes<>nil then Indexes.free;
  inherited;
end;
 
function TIntList.indexOf(value: integer): integer;
begin
  result:=indexOf(pointer(value));
end;
 
procedure TIntList.Insert(index, value: integer);
begin
  Insert(index,pointer(value));
end;
 
procedure TIntList.LoadFromFile(txtfilename: string);
var s:TStringList; i,k:integer;
begin
  s:=TStringList.Create;
  s.LoadFromFile(txtfilename);
  Clear;
  for I := 0 to s.Count - 1 do
    if TryStrToInt(trim(s[i]),k) then
      Add(k);
  s.free;
end;
 
function TIntList.readItemInt(index: integer): integer;
begin
   result:=Integer(self.Items[index]);
  //result:=10;
end;
 
function TIntList.readText: string;
var i:integer;
begin
  result:='';
  for i := 0 to Count-1 do
    result:=result+inttostr(self[i])+#13#10;
  System.delete(result,length(result)-1,2);
end;
 
procedure TIntList.SaveToFile(txtfilename: string);
var s:TStringList; i:integer;
begin
  s:=TStringList.Create;
  for i := 0 to Count - 1 do
    s.add(inttostr(self[i]));
  s.SaveToFile(txtfilename);
  s.free;
end;
 
procedure TIntList.Sort;
// [url]http://www.delphisources.ru/pages/faq/base/array_shell_sort.html[/url]
 var
   bis, i, j, k{, ik}: Integer;
   h: Integer;
begin
  //if Indexes=nil then Indexes:=TIntList.Create;
  //Indexes.Clear;
  //for i := 0 to Count - 1 do Indexes.Add(i);
   bis := Count-1;
   k := bis shr 1;// div 2
   while k > 0 do
   begin
     for i := 0 to bis - k do
     begin
       j := i;
       while (j >= 0) and (self[j] > self[j + k]) do
       begin
         h := self[j];  //ik:=Indexes[j];
         self[j] := self[j + k];  //Indexes[j]:=Indexes[j + k];
         self[j + k] := h; //Indexes[j + k]:=ik;
         if j > k then
           Dec(j, k)
         else
           j := 0;
       end; // {end while]
    end; // { end for}
    k := k shr 1; // div 2
  end;  // {end while}
end;
 
procedure TIntList.writeItemInt(index: integer; const Value: integer);
begin
  if index<self.Count then self.Items[index]:=Pointer(value) else Add(Value);
end;
 
 
procedure TIntList.writeText(const Value: string);
var s:TStringList; i,k:integer;
begin
  s:=TStringList.Create;
  s.Text:=Value;
  Clear;
  for i := 0 to s.Count - 1 do
    if TryStrToInt(trim(s[i]),k) then Add(k);
  s.Free;
end;
 
end.
пример
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var i:integer; list : TIntList;
begin
list :=  TIntList.Create;
ramdomize;
for i:=0 to 20 do
  list.add(random(100));
ShowMessage(list.text);
list[2]:=100;
list[4]:=100;
list[0]:=100;
ShowMessage(list.text);
list.free; // 100% память очищена
end;
0
23.07.2012, 22:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 22:56
Помогаю со студенческими работами здесь

Очистка области памяти
Нужно очистить память созданную при помощи new. Сам специализируюсь больше на с++ - но в последнее...

Создание, уничтожение и очистка памяти от динамического массива
Здравствуйте. Создаю динамический массив, задаю размерность через SetLength(). Очищаю через...

Очистка памяти от форм
Мне необходимо почистить память от только что закрытой модальной формы, но так, чтобы при следующем...

Очистка памяти
При выполнении программы, память приложения растёт, а она должна быть неизменной. int main() {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru