Да я вас не учу, делать мне больше нечего. Тем более бесплатноАццкоМото wrote: 16 May 2017 19:24
Давайте дил: я вас не учу математике, а вы меня не учите погромизму.
Еще раз, всего два пункта:
1) просто общее правило, нельзя освобождать ту память, которую не ты выделял
2) в тот момент, когда "внутри внутренней функции", как вы изволили выразиться, освободился старый массив, любой клиент из параллельного потока (или из этого же - если старый указатель сохранен где-то еще) ничего об этом не знает. и не надо только рассказывать, что все клиенты должны обращаться к массиву по двойному указателю, сохраненному в "надежном месте". это не сработает. чуть-чуть может помочь volatile, но даже если этот изврат поможет, это серьезный performance hit на ровном месте. и вообще чесание правого уха левой ногой

С multithreading нет никаких проблем - каждый thread c самого начала должен работать со своими собственными данными, поэтому race conditions не бьывает если вы придерживаетесь такой парадигмы. Тот массив "принадлежит" всегда одному thread Другой thread его не видит. Вы не можете в любом случае иметь доступ (по крайней мере write, да и read очень осторожно) к одним данным из разных thread.
Зря вы спорите. Я просто очень хорошо знаю как пишется на С громандный энтерпрайз код со всеми наворотами, мыслимыми и немыслимыми, включая собственную threading library. Very advanced так что вещи типа boost рядом не стоят. То, что я вам говорю - это как реально пишутся на С продукты экстремальные по своей сложности.