Вы не перераспределяете достаточно памяти:
array = (int*) realloc (array, lastIndex * sizeof(int));
На первой итерации цикла значение lastIndex
увеличивается с 0 до 1, затем вы запускаете вышеуказанный вызов realloc
. Поскольку lastIndex
равно 1, у вас все еще достаточно места для 1 элемента. В результате вы пишете после окончания выделенной памяти на следующей итерации.
Это вызывает неопределенное поведение , которое в вашем случае проявляется в том, что оно работает должным образом в течение первых 6 итераций и заканчивается 7-м. Он мог так же легко разбиться на первой или второй итерации.
Добавьте единицу к размеру, который вы выделяете:
array = realloc(array, (lastIndex + 1) * sizeof(int));
Кроме того, не приводят возвращаемое значение malloc
/ realloc
.
Есть ли способ в Linux / X сопоставить определенные комбинации клавиш с другими комбинациями клавиш?
В По традиции всех проектов с открытым исходным кодом, нет способа, есть несколько . На самом низком уровне у вас есть привязки клавиш ядра, что, вероятно, не то, что вы хотите. На уровне X-сервера у вас есть xkb с его многочисленными утилитами. И затем кажется, что у каждого оконного менеджера - gnome, kde, xfce или других - также есть утилита сопоставления клавиш. В xkb, похоже, много утилит и тому подобного, и, скорее всего, он более полный, чем утилиты сопоставления клавиш любого случайного оконного менеджера, поэтому я бы сначала посмотрел на него.
xmodmap -e "keycode 63 = Control_L"
Таким образом, Cmd будет Control. Никакие другие ключи не будут заменены
Отредактировано: я забыл "-e"
KDE 3 является, вероятно, самым гибким здесь; существует предопределенная схема сочетания клавиш, названная "Схема Mac". Можно установить его через KControl Control Center > Regional & Accessibility > Keyboard Shortcuts
или kcmshell keys
и это будет иметь эффект почти на все приложения KDE сразу. Вы могли бы пропустить некоторые из тех подобных Emacs "Ctrl -*" ярлыки, которые OS X имеет, но что в стороне, он работает хорошо (как долго, поскольку Ваши X модификаторов отображаются правильно). И если это не к Вашей симпатии, это легко настраиваемо.
Можно также установить Control Center > Desktop > Behavior
включить подобную Mac OS строку меню; все приложения KDE затем совместно используют строку меню наверху экрана вместо того, чтобы быть присоединенными индивидуально к каждому окну.
Вы получите почти весь путь там при переключении Cmd и Ctrl