|
|
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
В оконной процедуре на сообщение WM_CREATE создаю обьект выделяя под него память из кучи: Код: plaintext Мне надо освободить эту память при закрытии окна. Сначала ложу указатель в окно: Код: plaintext Потом на сообщение WM_DESTROY мне надо уничтожить его: Код: plaintext 1. Но на операторе delete программа вылетает с ошибкой. В чем может быть проблемма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 14:33 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Проверь значение этого указателя после выделения памяти и перед сохранением. Проверь, что сделано это : Reserve extra window memory by specifying a nonzero value in the cbWndExtra member of the WNDCLASSEX structure used with the RegisterClassEx function. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 15:37 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Значния до и после сходятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 16:37 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
А если попробовать удалить объект сразу после создания. Может проблема в деструкторе объекта, а не в окне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 18:08 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Похоже дело все же в деструкторе. Поставил delete сразу после создания обьекта( не пользуясь S(G)etWindowLongPtr() ), и код все равно умирает на delete. Но что может быть не так в деструкторе? У меня там нет никакого кода. Может дело в том что в классе есть члены-вектора — может их надо перед удалением памяти отдельно уничтожать(но они заводились не с помошью new)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 13:52 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Eugene7Похоже дело все же в деструкторе. Поставил delete сразу после создания обьекта( не пользуясь S(G)etWindowLongPtr() ), и код все равно умирает на delete. Но что может быть не так в деструкторе? У меня там нет никакого кода. Может дело в том что в классе есть члены-вектора — может их надо перед удалением памяти отдельно уничтожать(но они заводились не с помошью new)? деструктор виртуальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 14:25 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Eugene7Похоже дело все же в деструкторе. Поставил delete сразу после создания обьекта( не пользуясь S(G)etWindowLongPtr() ), и код все равно умирает на delete. Но что может быть не так в деструкторе? У меня там нет никакого кода. Может дело в том что в классе есть члены-вектора — может их надо перед удалением памяти отдельно уничтожать(но они заводились не с помошью new)? деструктор виртуальный? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 14:53 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
На Type и его конструктор бы посмотреть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 14:56 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Попробуй передать delete не void*, а указатель на конкреный тип или на корень иерахии от которого он наследуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 16:14 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
Пардон, не досмотрел код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 16:15 |
|
||
|
Удаление обьекта
|
|||
|---|---|---|---|
|
#18+
_БалтикаНа Type и его конструктор бы посмотреть... Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33605980&tid=2031746]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 518ms |

| 0 / 0 |
