|
|
|
COM & garbage collector
|
|||
|---|---|---|---|
|
#18+
Спецификация COM требует, чтобы указатель, ненужный для использования, освобождал объект, вызывая метод Release(); Почему тогда такой код вызывает ошибку: имеем класс, где определены конструктор и деструктор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и имеем функцию, в которой этот класс создается и уничтожается: Код: plaintext 1. 2. 3. Всё отрабатывает нормально и указатель действительно освобождает объект.. но, при закрытии приложения, происходит повторный вызов Release() для указателя, хотя такой код нигде не присутствует. Есть предположение, что происходит автоматическая сборка мусора. Действительно ли это так и означает ли это, что можно позабыть обо всех указателях/объектах и довериться на этот сборщик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 14:45 |
|
||
|
COM & garbage collector
|
|||
|---|---|---|---|
|
#18+
IXMLDOMDocumentPtr - это smart pointer, который в деструкторе сам вызывает Release. Поэтому можешь его явно не вызывать, или перепиши так : Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 15:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32363371&tid=2035594]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 314ms |

| 0 / 0 |
