It does, as it does for deleting items.
Watch mIRC mem usage - e.g. in the taskmanager - while this is runnning:
Code:
alias htest {
  hmake -s htest
  .timer 1 5 htestadd
}

alias -l htestadd {
  echo -sgc info * adding 100k items...
  var %n = 1
  while (%n <= 100000) { hadd htest %n $str(%n,75) | inc %n }
  echo -sgc info * ...done
  ; or hfree here instantly
  .timer 1 5 htestdel
}

alias -l htestdel {
  echo -sgc info * deleting the items...
  var %n = 100000
  while (%n) { hdel htest %n | dec %n }
  echo -sgc info * ...done
  .timer 1 5 hfree -s htest
}