삭제로 해제 된 물체의 파괴자 내부에서 무료 사용
-
06-07-2019 - |
문제
삭제로 자유롭게 해방하는 객체가 있고 char*
그것은 소멸자가 자유롭게 해방되고 있습니다. 내가 무료로 사용하는 이유는 내가 strdup을 사용했고 malloc
만들 때 char
포인터. 내가 사용하는 이유 malloc
대부분의 코드 경로에서 시작하기 위해 strdup을 사용했기 때문입니다. 이 시나리오가 기억 손상을 일으킬까요?
해결책
아니요, 전화를 제대로 일치 시키면 즉 free()
함께 할당 된 메모리 malloc()
그리고 delete
함께 할당 된 메모리 new
, 그것은 잘 작동합니다.
다른 팁
당신이하는 일은 정확합니다. 수업 new
Ed는 거래해야합니다 delete
, 그러나 그것이 할당 된 메모리를 소유하고 있다면 malloc
(직접 또는 간접적으로) 그러면 해당 메모리를 free
.
구현이 정확합니다. malloc () (또는 strdup ())로 할당 된 메모리를 해제하기 위해 Free ()를 사용하면 정확히해야 할 일입니다.
요구 사항은 해당 메모리를 할당하는 데 사용되는 원시적 인 메모리를 사용하여 메모리를 해제해야합니다. 이 요구 사항은 구현에서 충족됩니다.
나는 무엇이 잘못되었는지 알아 냈습니다. 나는 내 개체를 메소드를 통해 사본으로 전달하고 있었고, 그것은 char*
가로질러; 함수가 종료되면 해당 임시 객체가 삭제되어 char*
. 이제 필요합니다 char*
방법이 종료 된 후에는 지금 사라졌습니다. 둘 *
S와 마이너스 하나가 고정되었습니다.
제휴하지 않습니다 StackOverflow