Отладка во время паузы и «не может оценить выражение»

Вы неправильно вычисляете свои адреса в memcpy. Начиная с arr как int *, вы добавляете число целых чисел для продвижения указателя, а не количество байтов.

Один из способов исправить это - просто позволить компилятору вычислить адреса:

memcpy(&arr[i], &nums2[c2], INTSIZE*(nums2Size-c2));

Или, придерживаясь указателя математики,

memcpy(arr + i, nums2 + c2, INTSIZE*(nums2Size-c2));

Последний параметр - это число байтов для копирования, поэтому число целых чисел необходимо изменить на количество байтов.

В обоих случаях я настроил второй параметр, чтобы начать копирование с правильного элемента в массиве nums2.

Тогда спросите себя: что произойдет, если c2 достигнет nums2Size? Вы в настоящее время не рассматриваете это дело.

27
задан Alex Angas 30 March 2015 в 02:39
поделиться

2 ответа

Проблема в том, что это не данные, которые вы хотите видеть, а результат выполнения некоторого кода. В .Net свойства на самом деле являются просто скрытыми методами, поэтому для получения значения свойства Visual Studio необходимо выполнить код приложения (эта функция известна как FuncEval).

Этот код должен выполняться в каком-то потоке, и VS делает для этого один из потоков приложения. Существует ряд ситуаций , когда VS не может запустить код для получения результата, и именно тогда вы видите сообщения об ошибках, о которых вы говорите.

2
ответ дан 28 November 2019 в 05:41
поделиться

Я знаю, что это клудж, но я доволен тем, как это работает. В конце моего метода Main (), который изначально запускает все и создает все другие структуры данных и потоки, а затем завершает работу, я вставляю это: прикрепить точку останова на фигурной скобке {. Программа ломается. У меня есть доступный поток и ссылка на все, поэтому я могу легко просматривать все структуры данных и все потоки, видеть все везде.

0
ответ дан 28 November 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: