Я в шоке или подозрение на менеджер памяти o.O

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Я в шоке или подозрение на менеджер памяти o.O

Сообщение Timid » 15.03.2010 15:25:23

А.Н. писал(а):Самое офигительное, что если закомментировать одну строчку(!), всё стабильно работает.
Код: Выделить всё
procedure strdel(const ps: PString);
begin
  //if (ps <> nil) then Dispose(ps);
end;




Ну это вообще "офигительно", проверять на nil параметр, переданный как константу! Да потом его еще и освобождать!

Вы что, обалдели, что-ли? Вы хоть разницу между var и const понимаете?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Я в шоке или подозрение на менеджер памяти o.O

Сообщение А.Н. » 16.03.2010 11:09:39

alexrayne писал(а):собсно последнее наверное есть универсальное решение процедуры
присваивания строки элементу списка.

Спасибо. Буду постепенно исправлять.

и кстати если используется фрюха, эту процедуру наверно можно сделать
inline, ибо она практически несодержит реального кода, все чистой воды обман
компилятора.

А с чем ещё, может использоваться Lazarus?

Timid писал(а):Ну это вообще "офигительно", проверять на nil параметр, переданный как
константу! Да потом его еще и освобождать!
Вы что, обалдели, что-ли? Вы хоть разницу между var и const понимаете?

Один хрен - передача указателя. Кто мне мешает передать нулевой указатель?
Разница между var и const - только с точки зрения синтаксиса, а также, в проверке компилятором на "неизменяемость", в случае const. Ну да... Есть ещё проверка... В случае с var, должно передаваться неконстантное выражение. Однако, не факт, что, переданный, указатель не будет равен nil.
Хм... А освобождается память, адресуемая указателем, не так ли?

Добавлено спустя 9 минут 56 секунд:
Хотя... Вероятно, правильнее так:
var ps

if (ps <> nil) Dispose(ps);
ps := nil;
А.Н.
постоялец
 
Сообщения: 230
Зарегистрирован: 13.03.2010 12:23:58

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

Рейтинг@Mail.ru