_crtisvalidheappointer(block) 오류가 자꾸 뜨는데 어떻게 해결하죠;;

이경준@Facebook의 이미지

#include <iostream> 
using namespace std;
 
class ListNode {
	friend class CharList;
	char  data;
	ListNode  *link;
	ListNode(char a = '\0', ListNode* ptr = NULL) : data(a), link(ptr) { }
};
 
class CharList {
	ListNode  *head;			// 연결리스트의 첫 번째 노드를 가리킴
	void Free();				// 모든 노드들을 반환
public:
	CharList() : head(NULL) { }		// 생성자
	CharList(char c) : head(new ListNode(c, NULL)) { }
	void inssub(int i1, CharList &I2, int i2, int len) // I2의 노드 여러개를 I1 중간에 끼우기
	{
		int i;
		ListNode *first = head;
		ListNode *second = I2.head;
		for (i = 0; i < i1 - 2; i++)
		{
			first = first->link;
		}
		ListNode *last = first->link;
		for (i = 0; i < i2 - 1; i++)
		{
			second = second->link;
		}
		first->link = second;
		for (i = 0; i < len - 1; i++)
		{
			second = second->link;
		}
		second->link = last;
	}
	void Display(ListNode* p);		// p 노드부터 마지막 노드까지 출력
	void Display() { Display(head); }		// 전체 연결리스트 출력
	~CharList();				// 소멸자
};

여기서 inssub함수를 사용하는데 자꾸 힙공간에 오류있다고 뜨는거 같아요...

세벌의 이미지

https://kldp.org/node/158191 읽어보시고 다시 질문하세요. 안 그러면 소스 코드가 제대로 안 보입니다.

이경준@Facebook의 이미지

수정했습니다. ^^

프로그래밍 공부 중인 대학생입니다.