A2D2: Коль уж вы решили заняться программированием, тем более, что на С, потрудитесь прочесть хотя бы одну книгу по этому языку. Практически во всех достаточно неплохо описывается работа с памятью.
По наивности своей был уверен, что мой ответ сподвигнет вас именно к чтению :(
Как это может случиться? Обычно - внезапно! В каком случае может произойти? Например, у вас вызывается множество функций (одна из другой), в которые передается множество переменных.
Для начала все же стоит определиться, что вы понимаете под "измерить уровень воды"? Достаточно ли знать, что он не ниже какого-то определенного или же вы хотите знать точное количество воды в чайнике? В правильно сформулированном вопросе содержится 80% ответа.
memba: обычно я делаю так: небольшой сервер, который слушает порт. При старте - попытка подключиться к серверу. Если удалось, отправляем команду (это для десктопных приложений) на активацию окна и закрываемся. В противном случае запускаем сервер и слушаем порт. Решение это принесено еще со времен кодинга на С++. Кстати, в QT, если мне не изменяет склероз, QSingleApplication именно так и реализован.
Названия моделей можете получить у поставщиков СКУД. Возможность сделать самому есть - не думаю, что продаваемые решения сделали не люди. Вопрос про выход в сеть не совсем понял.