để bắt lỗi cắt ngắn con trỏ trong 64 bit, tôi đã thêm đoạn mã được đề cập here có bộ nhớ dưới 4GB cho nên allocs ở trên 32 bit. Trong một ứng dụng thử nghiệm MFC x64, tôi gọi chức năng đặt trước điều đầu tiên trong InitInstance(). sau đó tôi đã thêm một nút mà chỉ đơn giản thực hiện:Lỗi FileDialog khi đáy 4GB đầy đủ
CFileDialog dlg(TRUE);
dlg.DoModal();
Calling DoModal cuối cùng bị vỡ đâu đó với một callstack trong "không có đất Mans":
> 000000018000163b()
0000000100000024()
0000000000000001()
này không MFC cụ thể kể từ khi tôi có được những hành vi tương tự với tệp .NET FileDialog. Tôi nghĩ rằng đó là một cái gì đó ra khỏi bàn tay của tôi kể từ khi tập tin thực tếDialog xuất hiện một thời gian ngắn và sau đó bị treo. Cảm thấy như một phần mở rộng vỏ hoặc một cái gì đó nhưng tôi không thể có được nơi nó đến từ các cuộc gọi ngăn xếp không phải là giúp đỡ - nhưng tôi muốn tìm hiểu nếu có bất cứ điều gì tôi có thể làm!
Nếu tôi xóa chức năng đặt chỗ đặc biệt, tôi sẽ không gặp phải sự cố nữa.
Khó hiểu!
Vâng, nó đang làm việc, bạn đang bắt lỗi con trỏ. Chỉ cần không có trong mã của bạn. Sử dụng tiện ích AutoRuns của SysInternals để tắt các phần mở rộng của trình bao. –
Điều gì sẽ xảy ra nếu bạn thử cùng một điều với 'GetOpenFileName' (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646927%28v=vs.85%29.aspx)? + Ton site web est down ... – ixe013
Bạn có thể kiểm tra không gian địa chỉ của mô-đun nào xuất hiện trong đó hay là ngăn xếp bị đập vỡ? –