2011-01-17 6 views
8

Có vấn đề gì khi sử dụng con trỏ làm khóa có thể bắt buộc trong khi chạy chương trình không? (không cần phải lưu trữ vào đĩa và sử dụng nó sau này vì điều đó gây ra vấn đề rõ ràng)C++: Con trỏ làm khóa trong một số có thể bắt buộc

Có nhiều trường hợp tôi cần biết nhanh một đối tượng thuộc về một người quản lý đối tượng nào đó không. Một cách nhanh chóng để kiểm tra nó là lưu trữ mọi đối tượng trong trình quản lý đối tượng trong một hashtable trong đó con trỏ của đối tượng là khóa cho đối tượng thực tế: Ví dụ: HashTable

Trả lời

5

Không, không có vấn đề gì. Nó giống như lưu trữ int.

Con trỏ có giá trị không thay đổi và xác định duy nhất một tài nguyên.

Có tất nhiên là vấn đề nếu bạn không sử dụng tốt con trỏ của bạn, nhưng đây là một điều khác, không tương quan.

+0

Trên thực tế, con trỏ có thể an toàn hơn 'std :: string', vì những thứ này có thể thay đổi. 'boost :: hash' và' std :: tr1 :: hash' được thiết kế rõ ràng để làm việc với con trỏ. Tuy nhiên, việc quản lý bộ nhớ có thể trở nên phức tạp. –

0

Nó sẽ hoạt động tốt. Bạn có thấy vấn đề gì không? Có lẽ bạn nên thử xem. :)

0

Tắt đầu của tôi - Nếu không gian mem được trỏ bởi hashtable của bạn được deallocated mà không xóa các tham chiếu đến không gian mem được trỏ tới bởi con trỏ của bạn, sẽ có rò rỉ bộ nhớ treo xung quanh.