Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
smaldто память не освобождается? Вы уверены?Это как раз undefined behavior - выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:27 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
sherzod_память высвободится, но не будут вызваны деструкторы элементов массива. Для char не страшно, для объектов захватывающих ресурсы приведет к их утечке. Я уверен. Нет, это понятно, но, во первых, речь шла про автоматизацию управления массивом char, выделяемым при создании класса. Во вторых, shared_ptr<My_Class> PTR(new My_Class(args)) при удалении PTR вызывается деструктор My_Class и освобождается выделенная под My_Class память. А в деструкторе мы делаем, что надо. Но, если в MY_Class есть shared/unique_ptr, то и их массивы удаляются при удалении экземпляра My_Class. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:27 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
?smaldто память не освобождается? Вы уверены?выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти. Вы смотрели в реализации new/delete? Как они устроены знаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 15:46 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
smaldВы смотрели в реализации new/delete? Как они устроены знаете?То, что в конкретной реализации все работает - это гнилая отмазка. UB - оно такое undefined... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 16:10 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 18:38 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 18:58 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 18:59 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
Death, не death... Я имел в виду, что то, какой будет вызываться делитор, зависит от того, как указатель был сконструирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 19:03 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
MasterZivDeath, не death.. Не Death а именно deth Я имел в виду, что то, какой будет вызываться делитор, зависит от того, как указатель был сконструирован. Вы заглядывали в исходники реализаций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 19:34 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
smald?пропущено... выделение new[], освобождение delete (не delete[]). В вашем компиляторе оно может работать для char. А в другом компиляторе, где new и new[] по какой-то причине выделяют память из разных куч, привести к порче памяти. Вы смотрели в реализации new/delete? Как они устроены знаете? Ну так загляните в хеадер <new>, делов-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 23:32 |
|
||
|
Освобождение выделнной памяти
|
|||
|---|---|---|---|
|
#18+
BagaBagasmaldпропущено... Вы смотрели в реализации new/delete? Как они устроены знаете? Ну так загляните в хеадер <new>, делов-то.Ну в заголовок заглянуть недостаточно. Надо смотреть код, который компилятор генерирует. Конструкторы-то вызывает не operator new. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 05:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38603151&tid=2019573]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 438ms |

| 0 / 0 |
