2014-02-13 3 views

ответ

2

Предположив, что функция всегда вызывается из существующей области, нет необходимости для вас, чтобы объявить сферу в рамках этой функции. Выбор включения функций для каждой функции в значительной степени зависит от того, следует ли освобождать память для сбора мусора за каждую функцию. Вероятно, вам это не нужно, и вы должны просто периодически закрывать свою «основную» область, чтобы обеспечить GC.

Если вы хотите создать новую область в этой функции, то правильный метод возврата для вашего примера:

return handle_scope.Close(String::New("linux")); 

В этом случае, делать это не даст вам никакой дополнительной ценности, потому что есть нет локальные дескрипторы, созданные в области; есть только тот, который вы возвращаете, который все равно будет в охватывающей области. Но если вы создавали несколько локальных дескрипторов в этой функции, тогда было бы целесообразно заключить их в новую область, чтобы они могли быть GC'ed.

+0

Моя функция называется прямо из JavaScript, предполагает ли она, что она уже имеет область действия и delcaring HandleScope не требуется? – exebook

+1

Не нужно создавать HandleScope. Если вы вызываете из JavaScript, любые локальные дескрипторы, которые вы создаете, будут созданы в области вызова и будут иметь право на GC, когда эта область будет закрыта. –

Смежные вопросы