Trang chủ » Diễn Đàn » Lập trình và Phát triển Web » Windows Programming » Kiểm tra và cấp phát bộ nhớ trong delphi
Chủ đề đã bị khóa, bạn không thể xóa, sửa hay trả lời trong chủ đề này!
|
|
|---|
|
0
Tôi thường dùng hàm setlength(..,..) để cấp phát bộ nhớ động cho một biến, nhưng tôi không rõ hàm nào kiểm tra bộ nhớ còn lại của hệ thống, việc cấp phát bộ nhớ có thành công hay không và độ lớn lớn nhất mà hệ thống có thể cấp phát cho một biến. Nhờ các cao thủ chỉ giáo. Xin cám ơn
|
|
|
|
0
Tôi thấy vấn đề này rất cần thiết khi viết chương trình nhưng sao không ai quan tâm trả lời giúp tôi nhỉ. Thời pascal có hàm này nhưng kg tương thích với delphi và tôi cũng chưa tìm đc hàm tương tự
|
|
|
|
0
Tôi thấy vấn đề này rất cần thiết khi viết chương trình nhưng sao không ai quan tâm trả lời giúp tôi nhỉ. Thời pascal có hàm này nhưng kg tương thích với delphi và tôi cũng chưa tìm đc hàm tương tự Thử Google với từ khoá Delphi Memory API coi sao.
---------
NBThanh Tutorial Room, cập nhật thường xuyên bài viết mới. Các bài viết mới cập nhật: - PHP - Lưu nội dung file ảnh vào CSDL NEW! - Làm việc với CSDL MySQL trong PHP - Học PHP qua ví dụ - Gởi email text, HTML, tiếng việt Unicode - Học PHP qua ví dụ - 1 chương trình download manager/giấu đường dẫn download - Học PHP qua ví dụ - Làm việc với Cookie và Session |
|
|
|
0
Tôi thường dùng hàm setlength(..,..) để cấp phát bộ nhớ động cho một biến, nhưng tôi không rõ hàm nào kiểm tra bộ nhớ còn lại của hệ thống, việc cấp phát bộ nhớ có thành công hay không và độ lớn lớn nhất mà hệ thống có thể cấp phát cho một biến. Nhờ các cao thủ chỉ giáo. Xin cám ơn Tôi code không qua trường lớp, nên trả lời thế này: - Kiểm tra bộ nhớ còn lại của hệ thống: Bạn hỏi Google về API của Windows. - Cấp phát bộ nhớ có thành công hay không: Sau khi gọi SetLength() mà không raise exception thì thành công. - Độ lớn lớn nhất mà hệ thống có thể cấp phát cho 1 biến: Tùy HĐH và RAM của máy. Vd: + WinXP 32 bit: 4096 MB (= 2^32 bytes). + WinXP 64 bit: 2^64 bytes. Thời Pascal có hàm nào tương tự bạn nêu tên được không?
___________________________
sorry for my bad En... |
|
|
|
0
Thực ra thời pascal chỉ cho sd bộ nhớ heap 640K thôi. Một số hàm như getmem chỉ cung cấp một biến nhỏ hơn 64K. (Nếu sd bộ nhớ mở rộng cần lập trình riêng). Để kiểm tra độ lớn lớn nhất một biến có thể mở đc dùng hàm maxAvail và kiểm tra tổng bộ nhớ còn lại dùng hàm memAvail. Kg biết mình nhớ có đúng kg.
Đối với Delphi về lý thuyết có thể mở một biến lớn 2G, nếu hết Ram hệ thống có thể dùng đĩa cứng tạo bộ nhớ ảo. Tuy nhiên, mình muốn kiểm tra chắc chắn có thể mở đc biến với độ lớn cho trước kg để tránh gây lỗi, chương trình bị thoát giữa chừng. Với VC++ thì khi mở một biến quá lớn nó = nil chứ kg gây lỗi. Còn Delphi hình như kg phải vậy. |
|
|
|
0
Bạn cần gì phải dùng không gian lưu trữ cho biến quá nhiều vậy?
___________________________
sorry for my bad En... |
|
|
|
0
Mình xử lý những công viẹc liên quan đến ma tran có kích thước rất lớn
|
|
|
|
0
Tôi cũng đã dùng Delphi nạp thẳng 20, 30 MB dữ liệu vào RAM để xử lý. Thấy nó vẫn chạy tốt.
Xem lại bài viết của bạn từ năm ngoái. Vậy nhân tiện nói ngoài lề chút. Có thể bạn có thời gian dư dả cho dự án của bạn. Nếu bạn xử lý khối dữ liệu lớn hơn nữa, bạn thử tìm hiểu CUDA xem sao: http://www.nvidia.com/object/cuda_home_new.html Tôi chỉ đọc tin về CUDA và chưa trực tiếp code. Nhớ mang máng NVIDIA chỉ có API về CUDA cho C/C++. Embacardero nếu không có đột phá nào cho Delphi thì mãi chỉ theo sau Microsoft. Delphi còn sống là nhờ fan.
___________________________
sorry for my bad En... |
|
|
|
0
Cám ơn bạn. Mình là dân kỹ thuật chứ kg phải tin học. Mình chỉ tự mày mò cho công việc thôi chứ kg có cái dự án nào về CNTT cả. Mặc dù cũng biết C++ nhưng kg rành lắm nên mình thích viết trên DP hơn. Mình cũng cố gắng sd CSDL để vượt qua giới hạn về bộ nhớ nhưng có những việc thiên về tính toán nên dùng mảng sẽ tốt hơn. Tuy nhiên, do là nghiệp dư nên cũng có những rào cản chưa vượt qua đc, mong các bạn giúp đỡ.
|
|
|
|
0
Không biết matrix của bạn lớn cỡ nào vậy ?
|
