这和QT关系不大。是C/C++的问题。
你调用了new 或者malloc之类内存分配函数的全部都是在堆上面的。其他的都是在栈里面。
用了new(malloc)的一定要用delete(free)释放。只是由于QT有些已经帮你做了。有些object构造函数如果可以指定parent。一般delete的工作由parent来执行。有些是qt自动帮你删除,比如QStandardItemModel 添加的item都是new的。你QStandardItemModel remove对应项的时候qt就帮你delete了。具体可以看源码