Описание тега stackalloc

C# operator that allocates a block of memory on the stack
1 ответ

Почему stackalloc принимает переменную длину?

Есть идеи, почему ключевое слово stackalloc принимает переменную длину? Если эта инструкция возвращает указатель на буфер, выделенный в кадре стека, как компилятор управляет этим? Он перекомпилирует функцию во время выполнения каждый раз, когда она …
14 май '16 в 20:34
1 ответ

Анонимный делегат не использует новый local для каждой итерации, когда данные на локальном stackalloc

При использовании анонимного delegate В C# CLR сгенерирует копию локальных (например, переменных в текущей области) в куче используемых переменных. Такой локальный будет помещен в кучу для каждой объявленной переменной текущей области. Вы можете уви…
1 ответ

Получить указатель (IntPtr) из диапазона<T>, находящегося в безопасном режиме

Я хотел бы использовать Span и stackalloc для выделения массива структуры и передачи его вызову взаимодействия. Можно ли извлечь указатель (IntPtr) из диапазона, не будучи небезопасным?
05 фев '19 в 20:42
2 ответа

Инициализация памяти, выделенной с помощью stackalloc

Если я выделяю память stackalloc в C# эта память инициализирована (с 0 ) Документация не говорит об этом, а только говорит о том, что зарезервировано правильное количество. В моих тестах память по умолчанию 0, но это не значит, что это гарантировано.
30 дек '11 в 11:37
1 ответ

Почему stackalloc должен использоваться как инициализатор переменной?

Я пишу небезопасный код на C# (продолжение этого вопроса), и мне интересно, почему именно stackalloc Ключевое слово должно использоваться в качестве инициализатора переменной? Например, это приведет к синтаксической ошибке: public unsafe class Unsaf…
02 сен '15 в 01:16
4 ответа

Почему stackalloc нельзя использовать с ссылочными типами?

Если stackalloc используется со ссылочными типами, как показано ниже var arr = stackalloc string[100]; есть ошибка Невозможно получить адрес, получить размер или объявить указатель на управляемый тип ("строка") Почему так? Зачем CLR нельзя объявить …
24 фев '16 в 09:25
1 ответ

Защита от переполнения буфера для stackalloc в.Net

Из ссылки на C# для stackalloc: использование stackalloc автоматически включает функции обнаружения переполнения буфера в общеязыковой среде выполнения (CLR). Если обнаружено переполнение буфера, процесс завершается как можно быстрее, чтобы минимизи…
17 фев '13 в 21:02
2 ответа

C# & .NET: stackalloc

У меня есть несколько вопросов о функциональности stackalloc оператор. Как это на самом деле выделить? Я думал, что это что-то вроде: void* stackalloc(int sizeInBytes) { void* p = StackPointer (esp); StackPointer += sizeInBytes; if(StackPointer exce…
12 дек '11 в 10:08
1 ответ

Как работает stackalloc?

Здравствуйте, я пытаюсь выяснить, как это stackalloc работа. Так что из C/C++ Насколько мне известно (ограничено), вы не можете распределять память в стеке динамически, как здесь: C/C++ пример: void Allocate(int length){ int vector[length]; //wont w…
2 ответа

PIMPL и распределение стека

Так что я думал о PIMPL и распределении стека. Я писал библиотеку и решил использовать PIMPL, чтобы скрыть приватного члена класса. Это означает, что я бы объявил класс, как это class Foo { private: class Handle; std::tr1::shared_ptr&lt;Handle&gt; h…
11 июл '10 в 02:33
3 ответа

Как установить int для байта * C#

Как я могу преобразовать int в байт * по определенному индексу в байте *? В идеале я хотел бы иметь что-то вроде: unsafe{ byte* igm=stackalloc byte[8]; igm[4]=4283; } Он установит первую часть бита на igm[4], а остальную часть на igm[5]. Изменить: я…
11 июл '10 в 09:21
1 ответ

How to copy stackalloc memory to/from array?

При работе с stackalloc memory I would like to copy its content to/from an array. Я ищу что-то похожее на Buffer.BlockCopy which would allow me to pass offset in source data and offset in destination. Is there is such method for stackalloc объем пам…
10 окт '18 в 06:38
3 ответа

C++ распределение в стеке действует с любопытством

Любопытные вещи с g++ (может быть, также с другими компиляторами?): struct Object { Object() { std::cout &lt;&lt; "hey "; } ~Object() { std::cout &lt;&lt; "hoy!" &lt;&lt; std::endl; } }; int main(int argc, char* argv[]) { { Object myObjectOnTheStack…
18 фев '10 в 23:24
2 ответа

Stackalloc и типы значений

Я прочитал пример из старого поста Stackru о том, когда использовать stackalloc. Теперь этот пример меня немного озадачил: public unsafe void DoSomeStuff() { byte* unmanaged = stackalloc byte[100]; byte[] managed = new byte[100]; //Do stuff with the…
22 апр '14 в 20:02
0 ответов

C#- проверить, достаточно ли у стека свободной памяти

Вместо того, чтобы выделять кучу и закрепить таблицу указателей мне нужно как локальный метод, я хочу stackalloc это везде, где это возможно. Это критический код, фактически это, пожалуй, самый важный раздел моей системы, поэтому я не хочу просто пе…
08 май '18 в 09:41
3 ответа

Не может ли stackalloc использоваться в C# для инициализации ранее объявленного указателя?

Я только что обнаружил stackalloc Нотация C# имеет невероятную причуду, пожалуйста, смотрите следующий код: // int *p; // p = stackalloc int[42]; // won't work! // Error CS1525: Unexpected symbol `stackalloc' (CS1525) int *p = stackalloc int[42]; //…
09 ноя '12 в 12:38
6 ответов

Практическое использование ключевого слова stackalloc

Кто-нибудь когда-либо использовал stackalloc во время программирования на C#? Я знаю, что делает, но единственный раз, когда он появляется в моем коде, случайно, потому что Intellisense предлагает это, когда я начинаю печатать static, например. Хотя…
24 апр '09 в 09:51
2 ответа

C# Возвращает указатель, созданный с помощью stackalloc внутри функции

У меня есть код C#, который взаимодействует с кодом C++, который выполняет операции со строками. У меня есть этот кусок кода в классе статического помощника: internal static unsafe byte* GetConstNullTerminated(string text, Encoding encoding) { int c…
06 май '17 в 07:06
1 ответ

Безопасное индексирование внутри небезопасного кода

Доброе утро, день или ночь, Предисловие: приведенный ниже код ничего не дает. Это просто для целей объяснения. Что-то не так с выделением и использованием массива "безопасный режим" внутри небезопасного кода? Например, я должен написать свой код как…
23 мар '11 в 07:42
1 ответ

Указатель на структуру, содержащую System.Numerics.Vector<double> в C#

Я пытаюсь сделать вектор с 4 двойными с библиотекой System.Numerics из-за SIMD. Итак, я сделал эту структуру: public struct Vector4D { System.Numerics.Vector&lt;double&gt; vecXY, vecZW; ... } На этом этапе я кодирую его для 128-битного SIMD-регистра…
03 май '16 в 10:47