Несмотря на то, что это логически некорректно, мне кажется, что работающей программе нет никакого фатального вреда.
Предупреждение об ошибке.Рассмотрим следующее:
- поток 1 выделяет адрес 42 и записывает в него 'xyzzy'.
- поток 1 освобождает адрес 42.
- поток 2 выделяет адрес 42 изапишите в него 'plugh'.
- поток 1 снова ошибочно освобождает адрес 42.
- поток 3 выделяет адрес 42 и записывает в него "извилистые маленькие переходы".
Теперь потоки 2 и 3 оба считают, что им принадлежит эта память.Это примерно так же устойчиво, как мой маленький сын и дочь, которые думают, что они владеют той последней игрушкой, которую купили, поэтому, нет, это не закончится хорошо: -)
Имейте в виду, эти "темы«подразумевается, что они не должны быть потоками выполнения в многопоточной среде, это просто различие, которое я использовал, чтобы показать владение памятью.
Хорошая идиома для обработки ошибок:
- , если вы можете полностью это исправить, сделайте это.
- , если вы не можете это исправить полностью, остановитесь как можно быстрее, чтобы минимизировать ущерб.