Trong C++ khi tôi làm new
(hoặc thậm chí malloc) là có bất kỳ đảm bảo rằng địa chỉ trả lại sẽ lớn hơn một giá trị nhất định? Bởi vì ... trong dự án này, tôi thấy nó rất hữu ích khi sử dụng 0-1k như là một enum. Nhưng tôi sẽ không muốn làm điều đó nếu nó có thể để có được một giá trị thấp. Hệ thống đích duy nhất của tôi là 32 hoặc 64bit CPU với cửa sổ OS/linux và mac.Con trỏ có được đảm bảo là> một giá trị nhất định không?
Tiêu chuẩn có nói gì về con trỏ không? Có cửa sổ hoặc Linux nói bất cứ điều gì về thời gian chạy C của họ và những gì địa chỉ bộ nhớ thấp nhất (cho ram) là?
-edit- i kết thúc việc sửa đổi quá tải new
của mình để kiểm tra xem địa chỉ có ở trên> 1k không. Tôi gọi std :: chấm dứt nếu nó không.
Tại sao bạn sử dụng enums làm con trỏ? – Pubby
@Pubby: Phổ biến (đặc biệt là trong phiên dịch và trò chơi) dựa trên đặc điểm con trỏ cụ thể theo nền tảng để thêm thông tin vào chúng, thường là loại bỏ tính không giới hạn.Bởi vì các quy tắc căn chỉnh, ba bit dưới cùng là miễn phí; ngoài ra, các hệ thống 64 bit thường có các con trỏ không gian người dùng chỉ với 48 bit quan trọng; phần còn lại là tất cả '1' hoặc' 0', vì vậy bạn có thể đóng một con trỏ vào (53-bit) mantissa của một 'double' với các bit trên của nó được thiết lập để đại diện cho' NaN'. Sau đó, các cờ đặt hàng thấp cho phép bạn nhanh chóng lựa chọn giữa các biểu diễn với mặt nạ và dịch chuyển. –
Nó xuất hiện tôi chỉ cần 6 bit vì vậy tôi thậm chí sẽ không cần 1 hoặc 4k đầu tiên :). Tham chiếu –