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 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    thắc mắc kiểu dữ liệu size_t

    chào mọi người.[IMG]images/smilies/kiss.gif[/IMG]
    em muốn hỏi , trong đoạn code dưới ,tai sao phải ép kiểu size_t { m*(size_t)n*sizeof(T)}

    //hàm cấp phát động mảng 2 chiều
    Mã:
    int** Arr2D_allow(T** &Matran,int m, int n){
    size_t sz1,sz2;
    sz1= m*sizeof(T*);
    sz2= m*(size_t)n*sizeof(T);
    MaTran = (T**)calloc(sz1+sz2,sizeof(T));
    ...........
    }
    Em cảm ơn!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    calloc/malloc đều trả về void* nên phải cast về T**.
    Thực ra sử dụng duy nhất 1 mảng 1 chiều thì giảm thời gian cấp phát hơn.

    Index calculation:
    - 1 mảng 1 chiều: 1 lệnh lea cho mỗi phần tử.
    - Mảng các mảng: Với mỗi phần tử phải đọc 1 word trong mem (quá lâu) để deref + 2 lệnh lea.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    calloc/malloc đều trả về void* nên phải cast về T**.
    Thực ra sử dụng duy nhất 1 mảng 1 chiều thì giảm thời gian cấp phát hơn.

    Index calculation:
    - 1 mảng 1 chiều: 1 lệnh lea cho mỗi phần tử.
    - Mảng các mảng: Với mỗi phần tử phải đọc 1 word trong mem (quá lâu) để deref + 2 lệnh lea.
    hình như bạn chưa hiểu câu hỏi của mình lắm [IMG]images/smilies/smile.png[/IMG]

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi accesster
    hình như bạn chưa hiểu câu hỏi của mình lắm [IMG]images/smilies/smile.png[/IMG]
    Oops.
    Mà bạn lấy code ở đâu mà quái thế nhỉ, mình có bao giờ cast cái size làm gì.
    Chắc bị warning wrong type (NOT uncompatible type) và "treat warnings as errors" nên mới cast đấy.

  5. #5
    Ngày tham gia
    Feb 2014
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    Oops.
    Mà bạn lấy code ở đâu mà quái thế nhỉ, mình có bao giờ cast cái size làm gì.
    Chắc bị warning wrong type (NOT uncompatible type) và "treat warnings as errors" nên mới cast đấy.
    Hoàn toàn không có lỗi nhé. [IMG]images/smilies/smile.png[/IMG] . ^^

 

 

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
  •