동적할당 후 해제할 때 급 등장하여 사람을 당황시키는 에러

_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)


검색을 했더니 통상적인 이유는 아래와 같음.

1. 같은 걸 두 번 연속으로 delete했을 때 (해제한 것을 다시 해제했을 때)

ex)

int* i = NULL;

i = new i[5];


delete[] i;

delete[] i; <- ERROR!


2. 잘못 해제했을 때

int j;


delete[] &j;




----------------------------------------------------------------------------------------------------------

나도 이런 에러를 만났다-,.- 그런데 위의 두 가지 경우는 아니기에 잠시동안의 삽질을 했고, 원인을 찾았기 때문에 기록.


3. 할당받아 사용하는 변수를 사용해서 엉뚱한 곳에 값을 저장했을 때

한마디로 뻘짓한거다.ㅠㅠ


int* k = new int[5];

k[-1] = 10; <- 여기서부터 벌써 에러지만...

delete[] k;


k[5] = 10; 하고 나서 delete하면 오류나는거까진 확인 못함

근데 아마 오류 나겠지 뭐. 해서도 안되는 짓이고...


Posted by HUEJI
: