powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Память и потоки
18 сообщений из 18, страница 1 из 1
Память и потоки
    #32293760
Shev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть поток №1, который выделяет память, заполняет ее некими данными и посылает событе с указателем на эту память другому потоку №2 этого же процесса. Вопрос: кому принадлежит выделенная память? И что произойдет с выделенной памятью если поток №1 завершиться, а второй поток продолжает работать? Уничтожится ли при этом память?

Также интересует: в стеке потока хранится выделенная память или только мой указатель на выделенную память?

Спасибо
...
Рейтинг: 0 / 0
Память и потоки
    #32294044
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу кончено, ошибаться, но насколько я понимаю:
Shev писал:кому принадлежит выделенная память?
первому потоку
Shev писал:И что произойдет с выделенной памятью если поток №1 завершиться, а второй поток продолжает работать? Уничтожится ли при этом память?
Память уничтожится. Обращение к ней вызовет ошибку.
Shev писал:в стеке потока хранится выделенная память или только мой указатель на выделенную память?
не понял вопроса. в стеке вроде бы не хранится ни "выделенная память" ни указатель на неё. Если ты сам туда не поместишь.
...
Рейтинг: 0 / 0
Память и потоки
    #32294758
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_kus
не соглашусь с тобой....

Shev
Итак, память принадлежит приложению, а еще точнее манагеру памяти. Но если потоки не в dll, то можно считать что приложению, а по сему любой поток убивает память выделенную в любом. память умерает сама тогда и только тогда, когда умрет приложение.

В стеке хранятся только локальные переменные адреса возвратов и при некоторых условиях функции. У каждого потока свой стек, а по сему с ним можно делать все тоже что и со стеком в однопоточнике, не заботясь о других потоках. Память выделяется глобальная, а по сему для доступа к ней необходимо применять средства синхронизации. Это могут бать Мьютексы, семафоры, критические секции и сигналы. В твоем случае я думаю стоит обратить внимание на класс TMultiReadExclusiveWriteSynchronizer. Он позволит разграничивать доступ к памяти очень удачно с минимальным временем простоя потоков. Не плохо будет и заглянуть в исходники класса, в них написано много интересного и правильного.
...
Рейтинг: 0 / 0
Память и потоки
    #32294833
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю StarWind.
За одним исключением... к сожалению не всегда память очищается при закрытии приложения... :(
...
Рейтинг: 0 / 0
Память и потоки
    #32294920
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiDen
Ладно, уточним :))
Это ДОЛЖНО быть :)) а если не так, то можно смело относить в разряд глюков операционки :)) Впрочем верно и другое утверждение, если прога после себя оставила в памяти мусор, то это очень нехорошо:)
...
Рейтинг: 0 / 0
Память и потоки
    #32294962
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!
Есть такая программа "MemProof". Она проверяет выделение и освобождение памяти программой. К сожалению работает только с Delphi и C++Builder и нужно правильно скомпилировать(поставить нужные для MemProof галочки в компиляторе и линкере).
Так вот если память выделяешь, то ее нужно освобождать и ни в коем случае не надеяться, что она освободиться сама. Это я проверял не однократно при помощи той самой "MemProof".
К сожалению, дистрибутива сейчас с собой нет, но насколько помню он небольшой, поэтому его можно скинуть по почте.
...
Рейтинг: 0 / 0
Память и потоки
    #32295015
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cauchy

если встретишь такую прогу за углом. направь чтоб ко мне зашла? :))
на мыло :)) Полюбопытствовать интересно Заодним может получится пронаблюдать культурная ли у меня прога :)
...
Рейтинг: 0 / 0
Память и потоки
    #32295042
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<<StarWind

Направлю. Завтра принесу болванку на которой записан дистрибутив и направлю.
Как бы не забыть...
...
Рейтинг: 0 / 0
Память и потоки
    #32295043
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cauchy
буду премного благодарен
...
Рейтинг: 0 / 0
Память и потоки
    #32295059
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вот тут перечитал снова фразу
"в стеке потока хранится выделенная память или только мой указатель на выделенную память?"....
если постараться, то можно наверное всеж выделить память и в стеке...
просто сместить указатель стека на некоторое кол-во байт.... вот только позволит ли операционка... но с другой стороны почему и нет? ведь локальные переменные создаются таким же способом... так что вполне можно и в стеке выделить память. Вот только один недостаток проявляется сразу, по умолчанию в стеке всего один мег памяти на все про все... Но это и решается довольно просто... при создании потока можно указать размер памяти... вобщем возможно мысль будет интересна когда-нить
...
Рейтинг: 0 / 0
Память и потоки
    #32295080
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<<StarWind

Мыло у тебя написано в разделе "Информация"?
Я правильно понял?
Этож такая хитрая защита от спама...
...
Рейтинг: 0 / 0
Память и потоки
    #32295085
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно верно
просто что-то реклама стройматериалив зачастила..... как-то это пока не входит в сферу моих интересов :))
...
Рейтинг: 0 / 0
Память и потоки
    #32295322
Shev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за ответы.

Я уже опытным путем исследовал эту проблему - все так как описал StarWind.
А по поводу MemProof, то я бы тоже не прочь обзавестись подобной программой (скиньте, please, на мыло).
Сейчас пишу небольшой сервер, который обрабатывает входящие запросы по сети. Там создается много всяких потоков, обменивающихся между собой данными. Очень хочется потестировать на утечки.
...
Рейтинг: 0 / 0
Память и потоки
    #32295357
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enjoy-те
memproof
...
Рейтинг: 0 / 0
Память и потоки
    #32295430
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, SergSuper

Скачал себе более свежую версию.
Что он не требует установки?
Тот MemProof, который у меня был, без установки тоже работал, но ничего не показывал.

<<StarWind и Shev
В принципе тут уже дали ссылку откуда скачать, так что присылать вам ничего уже не нужно. Хотя, если хотите, могу прислать свой "старый"
MemProof ( мне не жалко
).
...
Рейтинг: 0 / 0
Память и потоки
    #32296044
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, спасибо, скачал по ссылке :)
...
Рейтинг: 0 / 0
Память и потоки
    #32296150
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
memproof c BCB6 будет работать?
...
Рейтинг: 0 / 0
Память и потоки
    #32296249
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня BCB6. "Старая" версия работала. Новую еще не пробовал.
Правда названия пунктов в компиляторе и линкере отличаются от тех которые написаны в хелпе MemProof-а, но можно понять по смыслу.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Память и потоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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