Tôi nghĩ rằng tôi sẽ nhận được 8 khi tôi sử dụng IntPtr.Size. Tuy nhiên tôi vẫn nhận được 4 trên máy x64 với Widnows 7 x64, tại sao?Tại sao IntPtr.size là 4 trên Windows x64?
Trả lời
kiểm tra kiến trúc CPU của tệp của bạn, có phải là x86 không? Nó phải là CPU bất kỳ/64bit
Hệ điều hành 64 bit thực hiện môi trường mô phỏng được gọi là WOW64 mô phỏng môi trường Windows 32 bit. Bạn đang xây dựng chương trình nhắm mục tiêu x86 của bạn, tức là 32 bit. Điều đó có nghĩa là quá trình của bạn chạy dưới trình giả lập như là một quá trình 32 bit và tất nhiên các con trỏ rộng 4 byte.
Nếu bạn thay đổi các tùy chọn để nhắm mục tiêu x64 hoặc AnyCPU thì kích thước con trỏ sẽ là 8 byte khi quá trình của bạn chạy trên hệ thống 64 bit.
Kiểm tra mục tiêu xây dựng của bạn: x86/x64 hoặc bất kỳ cpu nào Nếu cấu hình của bạn là x86 hoặc bất kỳ cpu nào, thì intptr là 4 có thể.
More gợi ý:
Nếu bạn không có nhu cầu để chạy chương trình của bạn trong chế độ x64, xin vui lòng donn't thay đổi mục tiêu xây dựng để x64 bởi vì chế độ x64 có tác động tiêu cực trên cả hiệu suất và không gian sử dụng. Tôi quên liên kết của bài viết gốc trên MSDN, nhưng lý do chính là sự gia tăng kích thước ptr và GC gánh nặng, bạn có thể tìm kiếm bài viết đó.
Ngoài các câu trả lời ở trên, ngay cả khi bạn đã chọn Kiến trúc CPU bất kỳ, VS2013 có tùy chọn mới trong thuộc tính dự án có tên "Ưu tiên 32 bit". Bạn phải tắt nó trên các máy phát triển 64 bit để có được IntPtr.Size = 8.
- 1. Tại sao thẻ iframe này khiến Safari trên x64 Windows bị lỗi?
- 2. Tại sao đổi tên reg.exe trên Windows Server 2008 x64 làm cho nó không chạy được?
- 3. sizeof (int) trên x64?
- 4. Tại sao PostgreSQL quá chậm trên Windows?
- 5. Gỡ lỗi từ xa trên x64 Windows Server 2003
- 6. IntPtr.ToInt32() và x64 hệ thống
- 7. Cython sẽ không biên dịch trên Windows 7 x64
- 8. Tại sao không phải là XmlDocument động trong .NET 4?
- 9. tại sao sizeof ('a') là 4 trong C?
- 10. Thiếu switch.pm - Active Perl x64/windows
- 11. Bundle command not found Windows x64
- 12. Có thể tải Rails 4 hoạt động trên Windows không?
- 13. MSBuild.Community.Tasks.Attrib trên máy x64 không
- 14. Tại sao không chỉnh sửa và tiếp tục hoạt động trên CLR x64?
- 15. Tại sao "\ n" cung cấp một dòng mới trên Windows?
- 16. Tại sao TDateTimePicker.Check trả lại luôn đúng trên Windows 7?
- 17. Tại sao SeCreateSymbolicLinkPrivilege bị bỏ qua trên Windows 8?
- 18. Nhúng Python trên Windows: tại sao nó phải là một DLL?
- 19. Profiling x86 thực thi với Dependency Walker treo trên Windows 7 x64
- 20. Tại sao Windows 64 vẫn sử dụng user32.dll?
- 21. lỗi DummyNet trình điều khiển NDIS cài đặt trên Windows 7 x64
- 22. Tại sao trường tiêu đề NTOSKRNL.exe IMAGE_MACHINETYPE được đặt thành x86 trên một số phiên bản Windows 7 x64 nhất định?
- 23. Tại sao trình cài đặt Wi-Fi x86 trên Windows Vista x64 không ghi khóa vào Wow6432Node trong sổ đăng ký?
- 24. Tôi có thể chạy Visual Studio 2008 x86 trên Windows Vista x64 không?
- 25. laravel 4 không hoạt động trên Windows XAMPP
- 26. .NET 4 Cổng nối tiếp ObjectDisposedException trên Windows 7 Chỉ
- 27. Làm thế nào để gỡ lỗi với Visual C++ 6 trên Windows 7 x64?
- 28. TypeLoadException trên x64 nhưng tốt trên x86 với structlayouts
- 29. Gỡ lỗi x86 Ứng dụng .NET trên Windows x64 trong VS2008
- 30. Viết x86 lắp ráp trên bộ xử lý bit x64
Bạn đang biên dịch ứng dụng của mình thành x86 (Properties> Build> Platform Target) thay vì x64? – Rob
Xem tại đây: http://stackoverflow.com/questions/399003/is-the-sizeofsome-pointer-always-equal-to-four – htmldrum