이런 오류가 wchar_t의 동적배열(문자열)을 인자로하는 delete[]함수에서 발생하는데요


1. 동적할당을 해제할 메모리의 주소에 실제로 값이 있고, 쓰고 있는 주소 입니다 printf 하면 값이 정상적으로 나와요

심지어 문제가 되는 delete[] 바로 직전에 확인해도 값이 정상적으로 나옵니다


2. 메모리의 주소는 다를 수 있지만, 같은 값을 가지는 완전히 똑같은(아예 같은 위치의 코드에요) 실행이 한번은 정상적으로 나타납니다

심지어 이후에 다른 함수에서 delete[]를 사용해봐도 정상적으로 실행되요


그런데 특정 시점에 delete[]만 하면 저 오류가 나타납니다 대체 원인이 뭘까요?


+)


       //관련 없는 if문 생략


for (int i = 0; (unsigned)i < (unsigned)a; i++)

{

clear_str[i] = str[clear_range + i];

}

clear_str[a] = L'\0'; 


        delete[](str)// 여기서 오류가 납니다



//new의 크기를 다시 늘리거나 줄이기 위해서 아래와 같은 코드를 다른 함수에서 실행하는 경우도 있어요 


//이런식으로요 문제가 되는 배열인 str은 클래스 내에 있어요

free(this->배열명);  

this->배열명 = new wchar_t [필요한 크기]; 

//함수의 인자값으로 this->배열명 을 &타입으로 받아와서 함수의 파라미터를 this->배열명 대신 쓰기도 해요