堆上开辟的临时变量释放问题

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        // write code here
        ListNode* res = new ListNode(-1);
        res->next = head;
        ListNode* pre = res; 
        ListNode* cur = head;
        for(int i=1; i<m;i++){
            pre = cur;
           cur = cur->next;

        }

        for(int j=m; j<n;j++){
            ListNode* temp = cur->next;
            cur->next = temp->next;//这儿的cur与pre都是不变的
            temp->next = pre->next;
            pre->next = temp;
        }
        return res->next;
    }
};

这样一段代码中,reverseBetween函数结束后指针res是否没有释放从而导致内存泄露?如何避免这个问题?感谢。


//返回res->next
//改成
auto x=res->next;
delete res;
return x;

感觉你这里根本没有必要new一个节点。你只是把原来链表的m-n颠倒,并不需要额外的节点(只需要一个额外的指针就可以了。)