Описание тега stack-allocation
Это способ распределения памяти на компьютере.
0
ответов
Статическое распределение и распределение стека в дизайне компилятора
Я не ясно о том, было ли статическое и стек размещения? Является ли статическое распределение статическим и динамическое распределение стека? Тогда к чему относится распределение кучи? Как с этим связана запись активации? Я думал, что запись активац…
18 авг '18 в 07:56
3
ответа
Замена C++ для C99 VLA (цель: сохранить производительность)
Я портирую код C99, который интенсивно использует массивы переменной длины (VLA), на C++. Я заменил VLA (выделение стека) классом массива, который выделяет память в куче. Падение производительности было огромным, снижение в 3,2 раза (см. Тесты ниже)…
03 апр '16 в 20:01
3
ответа
Подсказки компилятора g++ для размещения в стеке
Существуют ли какие-либо методы, чтобы дать подсказке компилятору, что некоторые объекты могут иметь более статичное поведение, и размещать вещи в стеке вместо кучи? Например, строковый объект может иметь вид постоянного размера внутри некоторых фун…
04 ноя '14 в 09:19
3
ответа
Как компилятор управляет стеком времени выполнения?
На этом сайте есть много вопросов о стеке и куче. Но я хочу знать, как компилятор управляет стеком на самом деле? Распределение на основе стека определяется во время выполнения или во время компиляции? Рассмотрим следующий пример: #include <iostr…
23 дек '14 в 15:40
7
ответов
Как реализовать строку, которая размещается исключительно в стеке
В проекте около десяти лет назад мы обнаружили, что std::vectorДинамические распределения вызвали серьезную потерю производительности. В этом случае было выделено много маленьких векторов, поэтому быстрое решение состояло в том, чтобы написать векто…
14 окт '14 в 08:47
1
ответ
Явно размещенные в стеке данные
Я думаю, что в большинстве реализаций Common Lisp cons-ячейки обычно / всегда выделяются в куче (см. Почему медленное согласование в Lisp-е?) Common Lisp предоставляет возможность возврата нескольких значений из функции (используя values при возвращ…
16 окт '17 в 00:32
1
ответ
Как я могу эмулировать кадр стека в C++?
Я пишу контейнер, который использует alloca внутренне для размещения данных в стеке. Риски использования alloca кроме того, предположим, что я должен использовать это для домена, в котором я нахожусь (это отчастиallocaи частично для изучения возможн…
18 мар '18 в 01:56
1
ответ
Когда Hotspot может размещать объекты в стеке?
Поскольку где-то около Java 6, Hotspot JVM может выполнять анализ с удалением и размещать неэкранирующие объекты в стеке, а не в куче, собираемой мусором. Это приводит к ускорению сгенерированного кода и снижает нагрузку на сборщик мусора. Каковы пр…
24 мар '17 в 14:48
1
ответ
Как заставить компилятор MSVC исключить размещение в стеке больших временных объектов?
Этот вопрос не является дубликатом этого или других подобных вопросов. Этот вопрос касается очистки структуры после ее инициализации и использования. Обновить Прочитав первые несколько ваших комментариев, я хотел бы уточнить мой вопрос: Как я могу з…
11 дек '18 в 13:48
0
ответов
Стек выделяет неизменяемые массивы
Я делаю обширные вычисления в F# на коротких массивах uint64; Я хотел бы разместить их в стеке, чтобы избежать работы сборщика мусора. В C++ я бы сделал это: int search(int n, uint64_t* data) { while ( /* something */ ) { // ... do some computation …
30 мар '15 в 09:01
1
ответ
Константный массив размера Маршалла
Я пытаюсь иметь массив выделенный стек внутри структуры. Ну указатель я имею ввиду. Но я бы хотел, чтобы распределение выполнялось без дополнительного кода, потому что я знаю размер, когда пишу код (я не хочу делать кучу new когда я создаю свою стру…
15 дек '18 в 10:56
1
ответ
Удаление объектов с членами кучи
Я работаю над реализацией bitset. Битовый набор использует массив unsigned long long хранить биты. class bitset{ typedef unsigned long long uint64; uint64* bits; ... } Поскольку мне нужен этот набор битов для хранения большого объема данных, я счита…
12 май '19 в 23:47
1
ответ
Перечисление и обработка без выделения ресурсов
Я хотел бы решить проблему огромных затрат на размещение приложений на С #. Само приложение может быть представленоTickUser класс внизу, и я хотел бы знать, как реализовать TickStream объект и DoWork а также ProcessTick методы использования данных б…
25 фев '20 в 06:09
0
ответов
Улучшения в Escape Analysis и оптимизации выделения стека в JAVA 9 и последующих версиях
Являются ли правила оптимизации распределения стека менее строгими для HotSpot Java 9-13? В Java 7 и Java 8 HotSpot распределение объектов в стеке (из-за оптимизации JVM, известной как скалярная замена объекта) возможно, но для достижения распределе…
26 сен '19 в 11:22
1
ответ
Почему выделяется стековая память, когда она не используется?
Рассмотрим следующий пример: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } Сгенерированный код сборки для vector::empty (по clang, с оптимизациями): push rax call vector::size() const tes…
08 янв '20 в 01:22
0
ответов
Выполняет ли выделение стека через _malloca, запускает ловушку выделения, установленную через _CrtSetAllocHook
Для приложения обработки аудиосигнала в реальном времени мы хотим убедиться, что никакое распределение памяти кучи не выполняется из потоков реального времени. В качестве внутреннего инструмента отладки, используемого во время разработки, мы настрои…
30 апр '20 в 16:38
1
ответ
Тип класса для размещения стека. Почему адреса для обоих экземпляров идентификатора одинаковые?
class ID { public: ID(const std::string& name) : name_(name) {} // explicit copy constructor as my first solution but gave me same address ID(const ID& other) { name_ = other.getName(); } std::string getName() const { return name_; } private…
05 июн '20 в 18:39
1
ответ
Как я могу загрузить в стек все записи Vec <T> произвольной длины?
В настоящее время я работаю с векторами и пытаюсь убедиться, что у меня есть то, что по сути является массивом моего вектора в стеке. Я не могу позвонить Vec::into_boxed_sliceтак как я динамически выделяю место в моем. Это вообще возможно? Прочитав …
02 фев '21 в 04:54
2
ответа
Как я могу заменить член std::string на строку ограниченного размера без кучи?
У меня есть кодовая база с повсеместной структурой данных; и указанная структура имеет член std :: string. Теперь по причинам я хочу, чтобы эта кодовая база работала, когда std :: string недоступен, и фактически без динамического выделения памяти (п…
18 июн '21 в 19:36
0
ответов
Возврат диапазонов из методов [закрыто]
Я родом из C++, читал о Spans и ReadOnlySpans и не очень хорошо знаком со всей системой GC C #. Мой вопрос в том, что такой метод копирует эту строку в стек, а затем удаляет ее из памяти при выходе из кадра стека, верно? Если нет, то почему это так …
24 июл '21 в 23:25