How to prevent memory leaks in the below code? I added "delete sentinel" before return statement. But how to deal with the memory leak of these 2 lines d->next = new ListNode(sum % 10) and d->next = new ListNode(1)
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* c1 = l1;
        ListNode* c2 = l2;
        ListNode* sentinel = new ListNode(0);
        ListNode* d = sentinel;
        int sum = 0;
        while(c1 != NULL || c2 != NULL) {
            sum /=10;
            if(c1 != NULL){
                sum += c1->val;
                c1 = c1->next;
            }
            if(c2!= NULL){
                sum += c2->val;
                c2 = c2->next;
            }
            d->next = new ListNode(sum % 10);
            d = d->next;
        }    
        if(sum /10 == 1){
                d->next = new ListNode(1);
        }
        return sentinel->next;
    }
};
 
     
     
     
    