Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.10;
Скачать: CL | DM;

Вниз

Программа вылетает, если переменная принадлежит классу.   Найти похожие ветки 

 
User   (2011-01-10 14:30) [0]

Вот исходный код:


program Project1;  {$APPTYPE CONSOLE}  {$o-}
uses Windows;

const Size = 100;

//var  PB:PByte;  //  <-- it"s OK

type
 TRND = class
private
  PB:PByte; // <-- it"s an ERROR
 public
  Constructor  create;
  Destructor Free;
end;

Constructor TRND.Create;
begin
 GetMem(PB,Size);  // <-- Runtime error
end;

Destructor TRND.Free;
begin
 FreeMem(PB);
end;

var RND:TRND;

begin
 RND.Create;
 readln;
 RND.Free;
end.


Если переменная PB:PByte описывается как глобальная переменная, то всё ОК, но если сделать её членом класса, то программа вылетает с ошибкой в конструкторе, где выделяется память: GetMem(PB,Size);

В чём здесь ошибка?


 
DiamondShark ©   (2011-01-10 14:34) [1]


> В чём здесь ошибка?

В ДНК.


>  RND.Create;

RND := TRND.Create;


 
User   (2011-01-10 14:36) [2]

>RND := TRND.Create;

Спасибо!


 
Amoeba_   (2011-01-10 23:19) [3]

И негоже писАть такое:

> Destructor Free;

Корректно будет:

destructor Destroy; override;

P.S. Учите матчасть.


 
Юрий Зотов ©   (2011-01-10 23:48) [4]

И еще: судя по коду, объект должен существовать в программе в единственном экземпляре - так почему бы не сделать его синглтоном (например, перекрыв методы NewInstance и FreeInstance). Дел на 2 минуты, а надежность программы повысится.


 
DiamondShark ©   (2011-01-11 13:23) [5]


> а надежность программы повысится.

Юрий Зотов -- неисправимый оптимист!


 
Anatoly Podgoretsky ©   (2011-01-11 13:47) [6]


> Юрий Зотов ©   (10.01.11 23:48) [4]

Тогда вообще придется крест на программе ставить.



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

Текущий архив: 2011.04.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1294821073
student_92
2011-01-12 11:31
2011.04.10
Классы


2-1294736710
worldmen
2011-01-11 12:05
2011.04.10
Удаление заголовка окна


15-1293039638
TUser
2010-12-22 20:40
2011.04.10
Прожект вечного двигателя


1-1251978398
gosha52
2009-09-03 15:46
2011.04.10
Delphi 2009-2010, утекает память в записях


15-1292924463
12
2010-12-21 12:41
2011.04.10
Вот бы еще чего посмотрел - столкновение галактик.