Вниз
Скачать: CL | DM;

почему не вылетало AV ???   Найти похожие ветки 

← →
девушка   (2008-12-17 08:45) [0]

Добрый день!
Сегодня задали мне вопрос по Delphi. Привели откопаный откуда-то пример работы с XML:

uses
... MSXML2_TLB;

type
TForm1 = class(TForm)
...
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
coDoc : CoDOMDocument;
Doc: IXMLDOMDocument;
begin
Doc := coDoc.Create;
Doc.load("xml.xml");
Memo1.Text:=Doc.xml;
end;

end.


Вопрос был в том: "А почему, если так запускать программа работает, а когда я объявляю coDoc : CoDOMDocument; Doc: IXMLDOMDocument; глобально, то вылетает AV???"

А вот у меня вопрос - почему AV в первом случае не вылетало???


← →
Григорьев Антон ©   (2008-12-17 08:51) [1]

Потому что глобальные переменные инициализируются нулём, а если coDoc будет nil, AV гарантировано. А локальные переменные не инициализируются ничем, имеют случайные значения, и случайно может оказатьтся, что coDoc указывает на выделенную программе область памяти. Тогда AV не будет, будет какая-то другая ошибка, которая вылезет в другом месте из-за того, что вы запорете память, выделенную совсем для других целей.


← →
oxffff ©   (2008-12-17 08:54) [2]


> А локальные переменные не инициализируются ничем


Не все локальные переменные одинаково полезны.


← →
девушка   (2008-12-17 08:56) [3]


> Потому что глобальные переменные инициализируются нулём,
>  а если coDoc будет nil, AV гарантировано. А локальные переменные
> не инициализируются ничем, имеют случайные значения, и случайно
> может оказатьтся, что coDoc указывает на выделенную программе
> область памяти.

Точно!!! Спасибо большое



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.008 c
2-1230721519
demon
2008-12-31 14:05
2009.02.15
Как узнать создан ли класс?


2-1231237384
RUBEY
2009-01-06 13:23
2009.02.15
Ошибка в коде отправки почты


15-1229867338
Кое кто
2008-12-21 16:48
2009.02.15
Придумал свою систему разработки ПО


4-1202733177
JohnJ
2008-02-11 15:32
2009.02.15
управление программой, написанной на labview


15-1229497529
nnov
2008-12-17 10:05
2009.02.15
icq 5.1




   Наверх