powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Освобождение выделнной памяти
11 сообщений из 36, страница 2 из 2
Освобождение выделнной памяти
    #38603150
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
smaldто память не освобождается?

Вы уверены?Это как раз undefined behavior - выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603151
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_память высвободится, но не будут вызваны деструкторы элементов массива. Для char не страшно, для объектов захватывающих ресурсы приведет к их утечке. Я уверен.

Нет, это понятно, но, во первых, речь шла про
автоматизацию управления массивом char, выделяемым при создании класса.
Во вторых, shared_ptr<My_Class> PTR(new My_Class(args)) при удалении PTR
вызывается деструктор My_Class и освобождается выделенная под My_Class память.
А в деструкторе мы делаем, что надо. Но, если в MY_Class есть shared/unique_ptr, то
и их массивы удаляются при удалении экземпляра My_Class.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603188
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?smaldто память не освобождается?

Вы уверены?выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти.

Вы смотрели в реализации new/delete? Как они устроены знаете?
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603230
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
smaldВы смотрели в реализации new/delete? Как они устроены знаете?То, что в конкретной реализации все работает - это гнилая отмазка. UB - оно такое undefined...
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603432
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.cplusplus.com/reference/memory/shared_ptr/~shared_ptr/ ~shared_ptr();

Destroy shared_ptr
Destroys the object. But, before, it may produce the following side effects depending on the value of member use_count:

If use_count is greater than 1 (i.e., the object is sharing ownership of its managed object with other shared_ptr objects): The use count of the other objects with which it shares ownership is decreased by 1.
If use_count is 1 (i.e., the object is the unique owner of the managed pointer): the object pointed by its owned pointer is deleted ( if the shared_ptr object was constructed with a specefic deleter, this is called; Otherwise, the function uses operator delete ).
If use_count is zero (i.e., the object is empty), this destructor has no side effects.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603446
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDestroy shared_ptr
Destroys the object. But, before, it may produce the following side effects depending on the value of member use_count:

If use_count is greater than 1 (i.e., the object is sharing ownership of its managed object with other shared_ptr objects): The use count of the other objects with which it shares ownership is decreased by 1.
If use_count is 1 (i.e., the object is the unique owner of the managed pointer): the object pointed by its owned pointer is deleted (if the shared_ptr object was constructed with a specefic deleter, this is called; Otherwise, the function uses operator delete).
If use_count is zero (i.e., the object is empty), this destructor has no side effects.



Если нигде не делали ptr2=ptr1, то при уничтожении ptr1 объект in deth,
в противном случае in deth при умирании ptr2. Но для параноиков есть unique_ptr.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603449
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smaldMasterZivDestroy shared_ptr
Destroys the object. But, before, it may produce the following side effects depending on the value of member use_count:

If use_count is greater than 1 (i.e., the object is sharing ownership of its managed object with other shared_ptr objects): The use count of the other objects with which it shares ownership is decreased by 1.
If use_count is 1 (i.e., the object is the unique owner of the managed pointer): the object pointed by its owned pointer is deleted (if the shared_ptr object was constructed with a specefic deleter, this is called; Otherwise, the function uses operator delete).
If use_count is zero (i.e., the object is empty), this destructor has no side effects.



Если нигде не делали ptr2=ptr1, то при уничтожении ptr1 объект in deth,
в противном случае in deth при умирании ptr2. Но для параноиков есть unique_ptr.
Что такое in deth?
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603453
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Death, не death...
Я имел в виду, что то, какой будет вызываться делитор, зависит от того, как указатель был сконструирован.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603481
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDeath, не death..
Не Death а именно deth
Я имел в виду, что то, какой будет вызываться делитор, зависит от того, как указатель был сконструирован.

Вы заглядывали в исходники реализаций?
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603617
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smald?пропущено...
выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти.

Вы смотрели в реализации new/delete? Как они устроены знаете?

Ну так загляните в хеадер <new>, делов-то.
...
Рейтинг: 0 / 0
Освобождение выделнной памяти
    #38603669
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
BagaBagasmaldпропущено...


Вы смотрели в реализации new/delete? Как они устроены знаете?

Ну так загляните в хеадер <new>, делов-то.Ну в заголовок заглянуть недостаточно. Надо смотреть код, который компилятор генерирует. Конструкторы-то вызывает не operator new.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Освобождение выделнной памяти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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