i tried without using /hfree just saving it then restarting my client and then trying to load it, it wont work
Hash tables aren't
persistent. That means unlike variables, mIRC doesn't keep track of them when you close mIRC and restart it. So if you /hmake a hash table and then restart mIRC you will need to /hmake it again.
/hsave also doesn't change that fact. All /hsave does is store the contents of the hash table in a file. It is your (the scripter's) responsibility to /hmake and /hload the contents of that file into the hash table again if you close mIRC or /hfree the table.