Môi trường dev của tôi là VS2008, DX9, Windows XP. Tôi cố gắng thêm xử lý bảo vệ vào bộ nhớ ngoài. Khi malloc trả về NULL, tôi sẽ trang một số tài nguyên vào đĩa và giải phóng tài nguyên trong bộ nhớ.Tại sao malloc luôn trả về NULL
Nhưng đôi khi, malloc luôn trả về NULL, ngay cả khi tôi giải phóng hầu hết tài nguyên và quá trình sử dụng bộ nhớ và kích thước VM chỉ 800MB trong trình quản lý tác vụ.
Tôi nghĩ rằng việc sử dụng malloc để phân bổ 88 byte sẽ ổn, khi sử dụng bộ nhớ quá trình chỉ 800MB. Nhưng malloc luôn trả về NULL.
Đây có phải là phân mảnh bộ nhớ không? Nó không giống như vậy, vì quá trình sử dụng bộ nhớ không quá nhiều.
alt text http://i.imagehost.org/0267/Snap2.jpg
Bạn có thể cho chúng tôi biết một số mã không? –
Exe được khởi chạy và đính kèm bởi trình sửa lỗi VS. – Buzz
void * AllocCRT (size_t size) { return malloc (size); } Cách sử dụng Mem: 644,088K VM Kích thước: 671,064K – Buzz