DLLが Dで書かれているならDLL内で newを使わずmalloc
呼び出し側が free

さもなければDLL側が removeRoot
呼び出し側が addRoot

こうじゃないかな