Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Xử lý lỗi tràn bộ nhớ stack trong VC++?

    Có bài toán về dân số:
    Cho 1 file chứa 7 tỉ số liệu về tuổi dân số của 1 vùng, ví dụ: 1 1 2 3 3 2 5 6 ....
    trong quá trình tính toán cần sử dụng các số liệu trên.
    Em đã sử dụng mảng để ghi dữ liệu trên vào tuy nhiên khi sử dụng mảng thì bị giới hạn về kích thước ô nhớ stack! Mong các anh,chị cho em giải pháp để khắc phục bài toán này ạ???

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mảng tĩnh thì lưu trên stack, stack thường bé nên chắc là lưu không được, bạn có thể dùng cấp phát động, cấp phát động lưu trữ trên heap, có kích thước lớn hơn nhiều. Nhưng có nhất thiết phải lưu hết tất cả vào mảng hay không ? (giải thuật ?)

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi birthis
    Mảng tĩnh thì lưu trên stack, stack thường bé nên chắc là lưu không được, bạn có thể dùng cấp phát động, cấp phát động lưu trữ trên heap, có kích thước lớn hơn nhiều. Nhưng có nhất thiết phải lưu hết tất cả vào mảng hay không ? (giải thuật ?)
    Dạ, lưu các phần tử vào mảng là ý tưởng của em thôi ạ, chứ còn có cách nào khắc phục thì em vẫn chưa biết??
    À, em cũng thử sử dụng cấp phát bộ nhớ động:

    int *p;
    p=(int *) malloc(m*sizeof(int));

    Tuy nhiên nếu m=7 tỉ thì nó vẫn báo lỗi ạ???
    Em không biết xử lý thế nào nữa!

    Tiện thể, anh(chị) cho em hỏi thêm: khi xử lý tệp, có lệnh nào đọc tệp mà khi gặp ký tự xuống dòng thì dừng không ạ? (hình như em thấy nó không đọc ký tự xuống dòng mà nó đọc luôn sang phần tử tiếp theo của tệp?? hic hic)

  4. #4
    Thì bạn phải xem thử RAM của bạn và pagefile có đáp ứng được dung lượng này không, vì 7 tỉ nhân với 4 byte thì cũng ra xấp xỉ 7GB rồi còn gì. Như vậy giải thuật này là không dùng được rồi.
    Đọc tệp thì bạn có thể tìm hiểu về lệnh fscanf, và những tùy chọn của nó. Nó tương tương như lệnh scanf đó.
    Tham khảo về lệnh scanf ở đây: http://forums.congdongcviet.com/showthread.php?t=34612

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi birthis
    Thì bạn phải xem thử RAM của bạn và pagefile có đáp ứng được dung lượng này không, vì 7 tỉ nhân với 4 byte thì cũng ra xấp xỉ 7GB rồi còn gì. Như vậy giải thuật này là không dùng được rồi.
    Đọc tệp thì bạn có thể tìm hiểu về lệnh fscanf, và những tùy chọn của nó. Nó tương tương như lệnh scanf đó.
    Tham khảo về lệnh scanf ở đây: http://forums.congdongcviet.com/showthread.php?t=34612
    Ồ! cám ơn bạn nhé!!!!

  6. #6
    nếu mà làm đến 7 tỉ đơn vị dự liệu thì bạn nên làm theo kiểu băm ra thành block, và ta sẽ thao tác trên block như kiểu đánh địa chỉ của CPU vậy

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •