Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Вниз

почему не вылетало 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 вся ветка

Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.012 c
2-1231405184
FEV
2009-01-08 11:59
2009.02.15
Работает ли внешняя программа?


11-1196708262
Artlav
2007-12-03 21:57
2009.02.15
RichEdit и подсветка


6-1198858897
Jimmy
2007-12-28 19:21
2009.02.15
Игра через интернет


2-1230593760
Семен Кевларвестов
2008-12-30 02:36
2009.02.15
обработка данных КлиентДатасета в потоке


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский