Редактор MonoDevelop является медленным для Вас?

Давайте примем список со структурой

А-> B-> C-> D

, Если бы Вы только имели указатель на B и хотели удалить его, Вы могли бы сделать что-то как

tempList = B->next;
*B = *tempList;
free(tempList);

, список будет тогда похож

А-> B-> D

, но B содержал бы старое содержание C, эффективно удаляя то, что было в B. Это не будет работать, если некоторая другая часть кода будет содержать указатель на C. Это также не будет работать, если Вы пытались удалить узел D. Если Вы захотите сделать этот вид операции, необходимо будет создать список с фиктивным узлом хвоста, это действительно не используется так, Вы гарантируете, что никакой полезный узел не будет иметь ПУСТОЙ прямой указатель. Это также работает лучше на списки, где объем данных, сохраненный в узле, является небольшим. Структура как

struct List { struct List *next; MyData *data; };

была бы в порядке, но тот, где это

struct HeavyList { struct HeavyList *next; char data[8192]; };

, был бы немного обременителен.

17
задан poupou 25 August 2011 в 01:06
поделиться

1 ответ

Мы слышали об этой ошибке на некоторых MacBook, но мы не можем ее воспроизвести.

Не могли бы вы попробовать этот трюк, некоторые люди сообщили, что это решает проблему для них (недавно мы добавил это на нашу http://monotouch.net/Documentation/Troubleshoot страницу):

Иногда редактор исходного кода MonoDevelop работает очень медленно, кажется, зависает на несколько секунд между вводом символов.

Это проблема возникает очень редко и ее чрезвычайно трудно воспроизвести - обычно ее невозможно воспроизвести на том же компьютере после перезапуска MonoDevelop. По этой причине мы были бы признательны, если бы вы могли выполнить несколько шагов отладки перед перезапуском MonoDevelop и отправить нам результаты.

  1. Попробуйте закрыть вкладку редактора и снова открыть ее. Приходится ли немного редактировать или перемещать курсор, пока снова не произойдет замедление?
  2. Отключите «Beam Sync» с помощью инструмента разработчика «Quartz Debug» (который можно найти с помощью Spotlight) и проверьте, работает ли редактор исходного кода производительность восстановлена ​​до нормальной.
  3. Попробуйте повторить шаг (1) с отключенной функцией Beam Sync.
  4. Если редактор зависает более чем на несколько секунд, попробуйте запустить killall -QUIT monodevelop в терминале, пока он работает. повесили. Может быть сложно рассчитать время выполнения команды kill, когда редактор завис, но это важно сделать, потому что команда заставляет Mono записывать трассировки стека всех потоков в журнал MD, который мы можем использовать, чтобы узнать, в каком состоянии присутствуют потоки, пока MD висит.

Пожалуйста, прикрепите журнал MD, ~ /.

2
ответ дан 30 November 2019 в 13:13
поделиться
Другие вопросы по тегам:

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