Đôi khi các lỗi có thể gây ra ngoại lệ vi phạm truy cập bộ nhớ.Chính xác ngoại lệ vi phạm truy cập được kích hoạt
Chính xác ngoại lệ này được kích hoạt như thế nào? Cơ chế nào hoạt động sau hậu trường?
Liệu nó cần sự hỗ trợ từ CPU (bắt đầu từ những gì CPU?)/Từ hệ điều hành (bắt đầu từ phiên bản nào?)/Từ trình biên dịch (bắt đầu từ phiên bản nào?)
Edit:
Một kịch bản cụ thể mà tôi muốn hiểu rõ hơn:
Mã sau có thể gây ra ngoại lệ vi phạm truy cập.
TCHAR* czXXX= _T("ABCDEFG");
czXXX[0]= 'A';
Tôi đoán czXXX trỏ tới khối bộ nhớ chỉ đọc, nhưng chính xác thì điều gì xảy ra?
nếu RAM và Đĩa đầy đủ thì sao? –
@Scott 混合 理论 nó là bình thường đối với RAM được đầy đủ, hoặc gần như đầy đủ - RAM không sử dụng là lãng phí RAM. Do hiệu suất giảm đi nên máy tính phải sử dụng không gian hoán đổi, thông thường mọi người sẽ cố gắng chỉ chạy nhiều phần mềm như sẽ phù hợp với bộ nhớ. Khi không gian hoán đổi đã đầy, hạt nhân sẽ bắt đầu trả về lỗi cho cấp phát bộ nhớ hoặc sẽ giết toàn bộ các quy trình để giải phóng dung lượng. Hãy tìm "OOM Killer" để biết chi tiết về điều đó. – sarnold