Есть массив $А, заполненный своими значениями, и массив $В, также заполненный своими значениями.
Выполнить $А = $В; - что произойдет с памятью массива A?. Она перезапишется данными массива В, или А будет выделен новый кусок памяти с новыми данными а старая область памяти будет освобождена?
Выполнить сначала $A = array(); а затем $A = $B; - что произойдет в этом случае?
1. Kirilik - 27 Августа, 2011 - 16:48:41 - перейти к сообщению
2. SAD - 27 Августа, 2011 - 17:02:00 - перейти к сообщению
перезапишется
3. Kirilik - 27 Августа, 2011 - 17:10:32 - перейти к сообщению
Значит и в том и в другом случае память, отведенная ранее массиву А, будет возвращена программе?
Т.е. никаких утечек памяти в подобной ситуации PHP не допустит?
Т.е. никаких утечек памяти в подобной ситуации PHP не допустит?
4. SAD - 27 Августа, 2011 - 17:12:06 - перейти к сообщению
Я погорячился. Я не знаю...
5. Kirilik - 27 Августа, 2011 - 17:19:39 - перейти к сообщению
SAD пишет:
Я погорячился. Я не знаю...
На первый раз простяю!
6. EuGen - 29 Августа, 2011 - 09:39:57 - перейти к сообщению
Зависит от версии PHP а вернее от того, используется ли garbage collector (сборщик мусора).
Возможность эта добавлена с PHP >=5.3
Если не использовать GC то память не будет высвобождаться и мы получим одинаковый результат:
Возможность эта добавлена с PHP >=5.3
Если не использовать GC то память не будет высвобождаться и мы получим одинаковый результат:
Даст:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- string(13) "346080/524288"
- string(13) "347616/524288"
- string(13) "346796/524288"
Однако же если включить сборщик мусора, мы увидим другую картину: