|
어떤 포인터를 할당하고 다른 포인터변수에도 넣습니다.
그리고 원래 포인터를 해제한후에 다른포인터에서 접근할 때 유효하지 않은 메세지를 처리하고싶습니다
그러나 포인터주소만 가지고 처리가 될까요?
테스트 코드는 아래와 같습니다.
어떤 검사를 해줘야 두번째 delete를 건너뛸수 있을까요?
void testFunc()
{
char *nowstr;
char *newstr;
char temp[100] = "Borlandforum!!";
nowstr = new char[100];
memset(nowstr, 0x00, 100);
strcpy(nowstr, temp);
printf("nowstr = %s, len=%d, addr=%d\n", nowstr, (int)strlen(nowstr),(int)nowstr);
newstr = nowstr;
printf("newstr = %s, len=%d, addr=%d\n", newstr, (int)strlen(newstr),(int)newstr);
delete nowstr; <- 해제
nowstr = NULL;
printf("delete memory!!\n");
printf("newstr = %s, len=%d, addr=%d\n", newstr, (int)strlen(newstr),(int)newstr);
if (newstr != NULL) <<<========= 적당한 검사
delete newstr; <<<========== 여기서 유효하지 않습니다.
}
|