Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня, с точки зрения операций в памяти: procedure foo(s: Tstrings); и procedure foo(var s: TStrings); одно и то же или всетаки нет? в обоих случаях происходит передача по ссылке но. Сегодня случайно столкнулся с одним утверждением : xabr.... если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно). Этот способ передачи является у большинства самым излюбленным, но в тоже время является и самым не практичным, т.к. для выполнения метода выделяется дополнительная память для создания точной копией передаваемой переменой. Для решения этой проблемы следует использовать один из способов описанных ниже. ..... т.е. если передать с явным указанием var то этого не произойдёт? что то тут я недопонимаю или автор что то напутал. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 14:46 |
|
||
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
Для новичков обычно является большим сюрпризом то, что в Дельфи переменные типа TObject и иже с ним - указатели. Ведь они не читают документацию о внутреннем представлении типов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 14:56 |
|
||
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
hlopotun Всем доброго дня, с точки зрения операций в памяти: procedure foo(s: Tstrings); и procedure foo(var s: TStrings); одно и то же или всетаки нет? в обоих случаях происходит передача по ссылке но. Сегодня случайно столкнулся с одним утверждением : xabr.... если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно). Этот способ передачи является у большинства самым излюбленным, но в тоже время является и самым не практичным, т.к. для выполнения метода выделяется дополнительная память для создания точной копией передаваемой переменой. Для решения этой проблемы следует использовать один из способов описанных ниже. ..... т.е. если передать с явным указанием var то этого не произойдёт? что то тут я недопонимаю или автор что то напутал. Спасибо Любой экземляр класса - это, по сути, ссылка ( SizeOf(MyStrings)=SizeOf(pointer)). В случае foo(Strings:TStrings) будет создана копия этой ссылки, доп. память = 4 или 8 байт, В случае foo(var Strings:TStrings) будет создан указатель на ссылку Strings, расход памяти такой-же. Сам Strings не клонируется в случае foo(Strings:TStrings). Где Вы прочли эти сведения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 14:59 |
|
||
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
hlopotun что то тут я недопонимаю или автор что то напутал Автор с текстом перемудрил. Говорит о передачи строки, отвлекается на объекты, и продолжает говорить о строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 15:01 |
|
||
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
hlopotun с точки зрения операций в памяти: procedure foo(s: Tstrings); и procedure foo(var s: TStrings); одно и то же или всетаки нет? Нет. В первом случае передаётся указатель (значение выражения типа TStrings), а во втором - указатель на указатель (адрес переменной типа TStrings). Однако, с точки зрения ресурсов эти случаи довольно похожи. То есть "копирования большого списка" не происходит ни там, ни там, дополнительной памяти не выделяется ни там, ни там. hlopotun xabr Выкиньте неграмотный бред и учитесь сразу его закрывать. Судя по тому, как написан текст, автор сам не особо понимает происходящее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 15:20 |
|
||
|
Передача TStringList по ссылке
|
|||
|---|---|---|---|
|
#18+
на хабре одни питарасы! © Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 15:45 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2037176]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
15ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 207ms |

| 0 / 0 |
