Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамическое размещение объекта в определённом месте памяти с последующим её освобождением
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. В C++ имеется возможность размещать объект по чётко определённому, указанному разработчиком, адресу в памяти. В свете этого у меня возник вопрос об освобождении памяти, использованной таким образом. Пусть, к примеру, у меня имеется некоторый массив объектов char (выделенный ранее динамически) и указывающий на адрес, по которому требуется разместить объект некоторого класса A. На вскидку, мне видится три возможных варианта освобождения памяти. В коде ниже показываю все три варианта. В каждом из них происходит вызов деструктора, но я сомневаюсь, в каждом ли из них производится освобождение памяти... Интуитивно считаю, что в третьем варианте память должна освобождаться (деструктор там я вызываю вручную, иначе он не будет вызван). Оператору delete[] указываю "родной" указатель типа char , которому и была изначально выделена память. Но вот первый и второй вариант... С одной стороны, я использовал new , а с другой - я ведь не выделял новую память, а указал её адрес... Вот что в данном случае происходит? Происходит ли освобождение памяти, или же всё ограничивается банальным вызовом деструктора без последующего освобождения памяти? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 18:28 |
|
||
|
Динамическое размещение объекта в определённом месте памяти с последующим её освобождением
|
|||
|---|---|---|---|
|
#18+
Compositum, если ты о placement new, то программист обязан сам вызвать Деструктор и освободить память, если это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 19:25 |
|
||
|
Динамическое размещение объекта в определённом месте памяти с последующим её освобождением
|
|||
|---|---|---|---|
|
#18+
MasterZivplacement new Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 21:19 |
|
||
|
Динамическое размещение объекта в определённом месте памяти с последующим её освобождением
|
|||
|---|---|---|---|
|
#18+
Compositum, Первый и второй вариант невалиден, поскольку delete-у не предшествует new выделяющее память под хранение объекта класса. Рассмотри свой пример применительно к другому типу памяти (стек): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2013, 21:56 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38417450&tid=2019941]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 290ms |

| 0 / 0 |
