Я занимаюсь разработкой приложения, где я определяю несколько алгоритмов для работы на массиве данных, с общей формой:Может ли алгоритм безопасно разрешить самостоятельное назначение ввода для вывода?
Применить [алгоритм [K]] для данных в [I] и сохранить в [о]
Сузить до моих сомнений:
a) Возможно, что вход и выход являются одним и тем же объектом, например, при применении фильтра Гаусса к изображению.
b) Возможно, алгоритм разрешен без операции, например, при интерполяции массива данных на другой размер того же размера.
Когда (а) и (б) происходит в то же время, в следующую часть алгоритма
o[output_position]=process(i[input_position]);
Будет решительный к
o[output_position]=o[output_position];
Является ли это безопасно?
Некоторые довольно-не-полированная рассуждения:
Я предполагаю, что это, в основном потому, что (но я не чувствую себя уверенно с этим предположением) память-память перемещается решает памяти-to перемещение по регистру.
Он работал с некоторыми простыми тестами, но у меня нет знаний, чтобы сказать кому-то «взглянуть на мой хорошо продуманный код».
Я планирую скомпилировать флаги оптимизации и перейти к другим частям проекта, поэтому я волнуюсь, что где-то в будущем идут BOOM, и там идет еще один приятный день, проведенный на отладчике, для отслеживания этого самоназначения.
Заранее благодарен.
+1 для упоминания идиомы копирования и замены. – Veritas