Работа с массивом байтов C#

407
02 августа 2017, 18:24

Добрый день, собственно настало то время когда мне нужно работать с массивом байтов, а я в них ни тю, тю, изучал их мельком, собственно суть вопроса.

У меня есть массив байтов 'Data', и мне нужно их передать в 'SendAsync(data.Data, 20);'

Если я передаю их напрямую то вылазит исключение - StackOverflowException.

И как я понял мне надо создать какой то BlockSize (Или как то так) типа - var buff = new byte[3840];

Вот что принимает SendAsync -

Собственно что мне делать?

Answer 1

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

В SendAsync ты можешь посылать всё что тебе угодно, никаких ограничений нет. Если ты получаешь ошибку StackOverflowException, это значит что область памяти, выделенная под стек текущего потока исчерпана. По-умолчанию размер стека - 1 МБ. Если ты не занимаешься ручным выделением памяти, то с вероятностью в 98% это рекурсивные вызовы. Чаще всего - вызов одного и того же метода из себя самого. Реже - длинная цепь рекурсивных вызовов на большом количестве элементов (н.п. разворачивание контейнеров на файловой системе). В этом случае поможет переход к хвостовой рекурсии.

Могу предположить, что в твоём случае событие MediaDataSent райсится после отправки данных, сохраняя контекст вызовов, формируя таким образом бесконечную цепочку вызовов. Проверить это можно, раскомментировав строчку с отправкой данных, встав в этом месте в отладчике, и пропустив несколько итераций. После этого посмотри в окно стека вызовов.

READ ALSO
Таймер на 1 час в Unity3D

Таймер на 1 час в Unity3D

Привет! Помогите создать таймер на 1 час в юнити; нужно что бы через каждый час происходило действие

323
задача о размене монет (Coin change problem)

задача о размене монет (Coin change problem)

Здравствуйте, на Hackerrank решил задачу о размене монет с использованием мемоизацииОднако, мне моё решение, кажется не очень оптимальным

480
Параметры для Controller из Html.ActionLink

Параметры для Controller из Html.ActionLink

Всем привет, у меня на Home View генерится список ссылок:

263
Разработка игр для браузера. Аналог игры “Age of empires 2”

Разработка игр для браузера. Аналог игры “Age of empires 2”

Не могу разобраться в вопросе имются ли технологии позволяющие написать аналог 2D игры "Age of empires 2" для браузера? (Строительство зданий в любом...

308