У меня сложилось впечатление, что в C# элементы структуры размещаются в стеке и, таким образом, исчезают при возврате из метода, в котором они были созданы. Но что произойдет, если я помещу значения структуры в список и верну его? Элементы выживают. Размещаются ли иногда экземпляры структур в куче?
internal struct Stru
{
public int i;
}
internal class StruTry
{
public List Get(int max)
{
var l = new List();
for (int i = 0; i < max; i++)
l.Add(new Stru {i=i});
return l;
}
}
печать кода 0, 1, 2
[Test]
public void T()
{
var ll = new StruTry().Get(3);
foreach (var stru in ll)
Console.WriteLine("* "+ stru.i);
}
У меня сложилось впечатление, что в C# элементы структуры размещаются в стеке и, таким образом, исчезают при возврате из метода, в котором они были созданы. Но что произойдет, если я помещу значения структуры в список и верну его? Элементы выживают. [b]Размещаются ли иногда экземпляры структур в куче?[/b]
internal struct Stru { public int i; }
internal class StruTry { public List Get(int max) { var l = new List(); for (int i = 0; i < max; i++) l.Add(new Stru {i=i});
return l; } }
печать кода 0, 1, 2
[Test] public void T() { var ll = new StruTry().Get(3); foreach (var stru in ll) Console.WriteLine("* "+ stru.i); }
Я имею опыт работы с C++ и привык к тому, что локальные переменные обычно хранятся в стеке, а динамически выделяемые объекты хранятся в куче. Я пытаюсь понять, одинаково ли JavaScript обрабатывает стек и кучу памяти.
В JavaScript я написал следующий...
Я хочу понять, находится ли здесь arr в стеке или в куче. Поскольку объект распределяется динамически, находится ли массив в куче? Что делать, если у меня нет obj2, если я просто динамически выделяю obj в основном файле?
Я хочу понять, находится ли здесь arr в стеке или в куче. Поскольку объект распределяется динамически, находится ли массив в куче? Что делать, если у меня нет obj2, если я просто динамически выделяю obj в основном файле?
Я проходил несколько ссылок и обнаружил, что блог говорится, что «примитивы Java, хранящиеся в стеке», что, я чувствую, это зависит от переменной или локальной переменной. /> переменные класса - примитивы - хранятся...