메모리의 뾰족한 객체를 건드리지 않고 포인터 배열을 삭제하는 방법이 있는지 알고 싶습니다.메모리의 뾰족한 객체를 삭제하지 않고 포인터 배열을 삭제 하시겠습니까?
나는 이틀 전에 구현 된 HashSet
에 대한 제한 루틴을 작성하므로 해시 테이블이 가득 차면 다른 두 배 크기의 테이블로 바뀝니다. 개체 (User
)에 대한 포인터 배열을 사용하여 해시 테이블을 나타내고 있는데 배열 자체는 내 HashSet
클래스에서 동적으로 선언되므로 해시 함수를 사용하여 모든 내용을 새 테이블에 복사 한 후에 삭제할 수 있습니다.
- 원래 배열 크기의 두 배에 해당 크기로 다른 테이블을 선언 :
그래서 기본적으로 내가 할 필요가있다.
- 내 원래 배열의
User
개체에 대한 모든 포인터를 내 해시 함수를 적용하는 새로운 개체로 복사합니다.이 개체는 메모리에서User
개체를 가져오고 사용자 이름을 나타내는 문자열을 사용하여 색인을 계산합니다. - 원본 배열의 모든 포인터를 새 배열에 삽입 한 후 원래 배열에 할당 된 메모리를 확보하고 HashSet 클래스 (구성원 전용
userContainer
)의 포인터를 새 배열의 위치로 바꿔야합니다 정렬).
문제는 내가 그것을 위해 할당 된 메모리를 해제 delete[] userContainer
를 사용하는 경우 새로 만든 대체 배열이 메모리에서 해제 위치를 가리 있도록, 또한 메모리에있는 모든 개체를 삭제할 것입니다!
프로그래밍 언어에 대해 언급하지 않으려 고 죄송합니다. It is C++ –