2011-01-17 2 views
8

프로그램 실행 중에 해시 테이블 키로 포인터를 사용하는 데 문제가 있습니까? (디스크에 저장할 필요가 없으므로 나중에 문제가 발생할 수 있으므로 사용하지 마십시오.)C++ : 해시 테이블에서 키로 사용되는 포인터

개체가 특정 개체 관리자에 속하는지 여부를 신속하게 파악해야하는 경우가 많습니다. 이를 확인하는 빠른 방법은 개체 관리자가 실제 개체의 키인 해시 테이블에 모든 개체를 저장하는 것입니다. 예 : HashTable

답변

5

아니요, 문제는 없습니다. int을 저장하는 것과 같습니다.

포인터가 변경되지 않고 리소스를 고유하게 식별하는 값을 가지고 있습니다.

물론 포인터를 잘 사용하지 않으면 문제가 발생하지만, 이것은 또 다른 비 상관적인 것입니다.

+0

실제로 포인터는'std :: string'보다 안전 할 수 있습니다. 왜냐하면 그것들은 변경 가능하기 때문입니다. 'boost :: hash'와'std :: tr1 :: hash'는 명시 적으로 포인터를 처리하도록 설계되었습니다. 그러나 메모리 관리가 복잡해질 수 있습니다. –

0

잘 작동합니다. 어떤 문제가 보이니? 어쩌면 당신은 시도하고보아야 만합니다. :)

0

내 머리 꼭대기에서 벗어남 - 포인터가 가리키는 메모리 공간에 대한 참조를 먼저 삭제하지 않고 해시 테이블이 가리키는 메모리 공간이 할당 해제되면 메모리 누수가 발생할 수 있습니다.

관련 문제