powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ZeroMemory после New();
4 сообщений из 4, страница 1 из 1
ZeroMemory после New();
    #39616086
Добрый день.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
type

 pMyItem = ^TMyItem; 
 TMyItem = packed record 
    F1: Integer;
    T1: ShortString; 
...
  end;
...
var
  fpItem : pMyItem; 
...
  begin
    New(fpItem);
    ZeroMemory(fpItem, SizeOf(fpItem^)); // Нужно ли делать инициализацию?



?
Спасибо.
...
Рейтинг: 0 / 0
ZeroMemory после New();
    #39616091
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форум Автор Проверка,

Зависит от логики решения задачи.
...
Рейтинг: 0 / 0
ZeroMemory после New();
    #39616093
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокументацияFor global variables, local variables, objects, and dynamic variables
allocated using New, the compiler generates code that initializes all long strings and
variants
contained by a variable upon creation of the variable.
Инициализация всего остального - на тебе.

PS: У объектов, создаваемых с помощью классовых конструкторов, правила другие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ZeroMemory после New();
    #39617972
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам как-то напоролся... New не обнуляет выделенную память, как и GetMem. А вот AllocMem обнуляет. Если нет совсем уж критичных требований по скорости, я бы порекомендовал всегда обнулять - это убережет от мистических багов в будущем, даже если сразу после выделения памяти казалось бы все поля записи присваиваются (а вдруг потом появится новое поле?).
Кстати, в D2009+ появилась удобная конструкция Default, применяемая так:
fpItem^ := Default(TMyItem);
что дает проверку типов, да и для мелких структур быстрее ZeroMemory
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ZeroMemory после New();
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]