Как скопировать память в стеке из массива? - PullRequest
0 голосов
/ 10 октября 2018

При работе с stackalloc памятью я хотел бы скопировать ее содержимое в / из массива.Я ищу что-то похожее на Buffer.BlockCopy, которое позволило бы мне передать смещение в исходных данных и смещение в месте назначения.

Есть ли такой метод для stackalloc памяти?Или вообще - как скопировать память за один раз, не повторяя элемент за элементом?

int i = 0;
double* window = stackalloc double[max_window_size];
for (int x = 0; x < width; ++x)
{
    window[i] = array[x, y];
    ++i;
}

Важный улов : массив, о котором я спрашиваю, уже существует.Поэтому я не могу создать массив из stackalloc памяти и затем скопировать этот массив в существующий массив, потому что это лишит законной силы весь смысл использования stackalloc.

1 Ответ

0 голосов
/ 10 октября 2018

Я нашел ответ в Скопировать данные из IntPtr в IntPtr

Поэтому, чтобы ответить на мой собственный вопрос, нужно на секунду закрепить массив (используя ключевое слово fixed) итаким образом, у каждого есть два указателя под рукой.Buffer.MemoryCopy не имеет перегрузки со смещениями, но будет иметь небольшую арифметику с указателем, чтобы получить желаемый эффект.

...