файловый дескриптор - неотрицательное целое число, которое возвращают системные вызовы, такие, например, как создание файла, открытие, открытие пайпа и т.п., с этим дескриптором потом работают другие системные вызовы, такие как read write всякие
у тебя создается объект в области памяти, берется адрес, превращается в строку и печатается, после чего объект освобождает память на второй строке всё повторяется и новому объекту выделяется тот же кусок памяти а когда мы делаем object()==object() - создаются два объекта во время выполнения