JavaScript (V8) VS C++ (понимание распределения памяти в стеке и куче)C++

Программы на C++. Форум разработчиков
Anonymous
JavaScript (V8) VS C++ (понимание распределения памяти в стеке и куче)

Сообщение Anonymous »

Я имею опыт работы с C++ и привык к тому, что локальные переменные обычно хранятся в стеке, а динамически выделяемые объекты хранятся в куче. Я пытаюсь понять, одинаково ли JavaScript обрабатывает стек и кучу памяти.
В JavaScript я написал следующий код:

Код: Выделить всё

const test = {};
test.x = 4;
test.y = 5;
test.z = 6;
Код C++:

Код: Выделить всё

 class temp{
public:
int x;
int y;
int z;
};
int main (){
temp*test=new temp(); // test is stored in stack
return 0;
}
В C++ всегда проверяйте (указатель на объект), который будет храниться в стеке, а фактические данные объекта находятся в куче. (как в этой ссылке), это означает, что область функции не может видеть, что находится в куче (область функции может получить доступ к куче только через указатель и этот указатель в стеке (область функции может видеть только то, что находится в стеке))Но из этого ответа
в JavaScript (V8) в некоторых случаях сама ссылка test иногда может быть помещена в кучу.
мой вопрос: в этих случаях в JavaScript (V8) как область функции может видеть, что находится в куче (поскольку тест ссылается на себя в этих случаях помещается в кучу ) ?
Означает ли это, что в некоторых случаях в JavaScript (V8) куча и стек могут быть одним и тем же, поэтому область действия функции может получить доступ к куче (которая в этих случаях также является стеком)?

Подробнее здесь: https://stackoverflow.com/questions/791 ... allocation

Вернуться в «C++»