(No experience loading models in C++ yet, so could be way off, but in case it takes a while for more knowledgeable people to reply)
Have you tried ensuring your module is in eval mode. Looks like in C++ you can do module.eval(); like in python. That behaviour would be consistent with forward creating a graph for backwards that never gets destroyed.
It might also be that putting your module in eval mode in Python before exporting will carry over to C++, but not sure of that, think I saw something to that effect though.