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 объем памяти? Or in general -- how to copy memory in one go, without iterating element by element?

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

Important catch: the array I am asking about already exists. So I cannot create an array from stackalloc memory and then copy this array to existing array, because it would invalidate whole point of using stackalloc in the first place.

1 ответ

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

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

Другие вопросы по тегам