Здравствуйте. Столкнулся с непонятной проблемой - есть функция #1, которая несколько раз вызывается в прогамме. В ней выделяется память, куда записывает данные другая функция #2, потом эти данные проверятся (функция #2 вызывается из #1). Затем в #1 память освобождается через free(). Но если посмотреть а отладчике - все данные на месте.
Затем при следующем выхове #1 снова выделяет память - того же размера (память используется как буфер). И "свежая" память содержит данные, которые по идее освободились от прошлого вызова. Адрес памяти тот же.
Собственно проблема в том, что создается впечатление, что не происходит вызова функции #2 из #1, т.к. новые данные не записываеются в выделенную память. Все осложняется тем, что если выполнять прогамму в отладчике пошагова с начал функции - все ок. Если же поставить точку останова на участок после вызова #2 из #1, видно, что указатель не изменился, и в нем содержатся данные спрошлого вызова функции.
Что и где не так? Время между вызовами между функциями очень мало (доли секунды). Причем, если поставить sleep(1) между выделением и очисткой памяти (да, кстати, я заполняю выделенную память нулями, и даже после этого в отладчике показываются данные с прошлого вызова), то все ок, в буфер записываются новые данные.
Буду рад любой помощи, т.к. сам уже сообразить не могу, что я сделал не так.