문제

삭제로 자유롭게 해방하는 객체가 있고 char* 그것은 소멸자가 자유롭게 해방되고 있습니다. 내가 무료로 사용하는 이유는 내가 strdup을 사용했고 malloc 만들 때 char 포인터. 내가 사용하는 이유 malloc 대부분의 코드 경로에서 시작하기 위해 strdup을 사용했기 때문입니다. 이 시나리오가 기억 손상을 일으킬까요?

도움이 되었습니까?

해결책

아니요, 전화를 제대로 일치 시키면 즉 free() 함께 할당 된 메모리 malloc() 그리고 delete 함께 할당 된 메모리 new, 그것은 잘 작동합니다.

다른 팁

당신이하는 일은 정확합니다. 수업 newEd는 거래해야합니다 delete, 그러나 그것이 할당 된 메모리를 소유하고 있다면 malloc (직접 또는 간접적으로) 그러면 해당 메모리를 free.

구현이 정확합니다. malloc () (또는 strdup ())로 할당 된 메모리를 해제하기 위해 Free ()를 사용하면 정확히해야 할 일입니다.

요구 사항은 해당 메모리를 할당하는 데 사용되는 원시적 인 메모리를 사용하여 메모리를 해제해야합니다. 이 요구 사항은 구현에서 충족됩니다.

나는 무엇이 잘못되었는지 알아 냈습니다. 나는 내 개체를 메소드를 통해 사본으로 전달하고 있었고, 그것은 char* 가로질러; 함수가 종료되면 해당 임시 객체가 삭제되어 char*. 이제 필요합니다 char* 방법이 종료 된 후에는 지금 사라졌습니다. 둘 *S와 마이너스 하나가 고정되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top