Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Các hàm cấp phát động trong borland C for DOS

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    5

    Question Các hàm cấp phát động trong borland C for DOS

    Các bạn cho mình hỏi:
    Trong borland C for DOS có bao nhiêu hàm cấp phát bộ nhớ động?và cách sử dụng ra sao(cú pháp và Thư viện)?và dùng trong trường hợp nào?
    và mong các bạn cho mình ví dụ nha.
    thanks!

  2. #2
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    có nhiều cách để cấp phát động nhưng tốt nhất cậu nên dùng cấp phát động new delete của C++,nó đơn giản dễ học mà dễ dùng
    đầu tiên cấp phát động cho mảng 1 chiều
    tên con trỏ = new kiểu con trỏ[ số phần tử cấp phát];

    giải phóng thì:
    delete[] tên con trỏ;

    cấp phát mảng nhiều chiều thì
    tên con trỏ = new * kiểu con trỏ [số phần tử chiều thứ nhất];
    for(int i=1;i<=số chiều thứ 2;i++)
    {
    tên con trỏ[i]= new kiểu con trỏ [số phần tử chiều thứ 2];
    }

    giải phóng bộ nhớ
    for(int i=1;i<=số phần tử chiều thứ 1;i++)
    delete[] tên con trỏ[i]
    delete [] tên con trỏ

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    VD cho cấp phát mảng 1 chiều

    Code:
    void InitArray(int *A, int length){ 
    
             A = new int[length]; 
    
             for(int i=0; i<length; i++) 
    
                      A[i] = 0; 
    
             return; 
    
      } 
    
     void DeleteArray(int *A){ 
    
              delete [] A; 
    
              return; 
    
      }

    cho cấp phát mảng 2 chiều
    Code:
    #include<stdio.h>
    #include<iostream.h>
     #include<conio.h>
    
     /* Khai báo nguyên m?u hàm */
    
     void InitArray(int **A, int row, int colum);
    
     void AddArray(int **A, int **B, int row, int colum);
    
     void DisplayArray(int **A, int row, int colum);
    
     void DeleteArray(int **A, int row);
    
     void InitArray(int **A, int row, int colum)
     {
    
            A = new int*[row];
    
            for(int i=0; i<row; i++)
            {
    
                    A[i] = new int[colum];
                    for(int j=0; j<colum; j++)
                    {
    
                           cout <<"Phan tu ["<< i << "," << j <<"] = ";
    
                           cin >> A[i][j];
    
                    }
            }
    
            return ;
    
     }
    
     void AddArray(int **A, int **B, int row, int colum)
     {
    
             for(int i=0; i<row; i++)
    
             for(int j=0; j<colum; j++)
    
                   A[i][j] += B[i][j];
    
             return;
    
     }
    
     void DisplayArray(int **A, int row, int colum)
     {
    
             for(int i=0; i<row; i++)
             {
    
                   for(int j=0; j<colum; j++)
    
                           cout << A[i][j] << " ";
    
                   cout << endl; // Xu?ng dòng
             }
    
             return;
    
     }
     void DeleteArray(int **A, int row){
    
             for(int i=0; i<row; i++)
    
                   delete [] A[i];
    
            delete [] A;
    
             return;
    
     } void main(){
    
              int **A, **B, row, colum;
    
              cout << "So dong: ";
    
             cin >> row;
    
              cout << "So cot: ";
    
             cin >> colum;
    
              /* Kh?i t?o các ma tr?n */
    
              cout << "Khoi tao mang A:" << endl;
    
              InitArray(A, row, colum);
    
             cout << "Khoi tao mang B:" << endl;
    
              InitArray(B, row, colum);
    
              // C?ng hai ma tr?n
    
              AddArray(A, B, row, colum);
    
              // Hi?n th? ma tr?n k?t qu?
        /* Kh?i t?o các ma tr?n */
    
              cout << "Khoi tao mang A:" << endl;
    
              InitArray(A, row, colum);
    
             cout << "Khoi tao mang B:" << endl;
    
              InitArray(B, row, colum);
    
              // C?ng hai ma tr?n
    
              AddArray(A, B, row, colum);
    
              // Hi?n th? ma tr?n k?t qu?
    
             cout << "Tong hai mang A va mang B:" << endl;
    
              DisplayArray(A, row, colum);
    
              // Gi?i phóng b? nh?
    
              DeleteArray(A, row);
    
              DeleteArray(B, row);
    
    }
    Đã được chỉnh sửa lần cuối bởi AlexF : 14-10-2008 lúc 02:55 PM.

  4. #4
    Ngày gia nhập
    08 2008
    Bài viết
    5

    ko thưa bạn coder_gate mình muốn hỏi trong borland C for DOS chư ko phải trong C++ window.

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    ko thưa bạn coder_gate mình muốn hỏi trong borland C for DOS chư ko phải trong C++ window.
    new delete cũng dùng được với BC for dos,cậu thử chưa

  6. #6
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mặc định Các hàm cấp phát động trong borland C for DOS

    ko thưa bạn coder_gate mình muốn hỏi trong borland C for DOS chư ko phải trong C++ window.
    Thứ nhất bạn đang post sai box vì vậy nên mới nhận được câu trả lời không như ý muốn.

    Với việc cấp phát động cho C bạn dùng malloc hoặc calloc, để thu hồi lại bộ nhớ bạn dùng free(); trong thư viện alloc.h hoặc stdlib.h mình không chắc chắn vì không dùng BC

    * Cú pháp:
    void *calloc( size_t num, size_t size );

    void *malloc( size_t size );

    void free( void *ptr );


    Để xem ví dụ, bạn có thể tìm các bài viết đã có trên diễn đàn ở box C. Phần con trỏ.

    Chúc bạn học tốt!

  7. #7
    Ngày gia nhập
    08 2008
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Thứ nhất bạn đang post sai box vì vậy nên mới nhận được câu trả lời không như ý muốn.

    Với việc cấp phát động cho C bạn dùng malloc hoặc calloc, để thu hồi lại bộ nhớ bạn dùng free(); trong thư viện alloc.h hoặc stdlib.h mình không chắc chắn vì không dùng BC

    * Cú pháp:
    void *calloc( size_t num, size_t size );

    void *malloc( size_t size );

    void free( void *ptr );


    Để xem ví dụ, bạn có thể tìm các bài viết đã có trên diễn đàn ở box C. Phần con trỏ.

    Chúc bạn học tốt!
    2 cái đó minh biết rồi.nhưng mình muốn biết thêm nhiều caí khác nữa.
    vì mình nghe nói có thêm farcalloc hay j nữa đó.
    mong các bạn giúp mình.Vì mình còn phải làm báo cáo nộp thầy.
    thanks!

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    thầy cậu bắt làm bài gì mà cần phải lắm hàm cấp phát động thế,mình có nói rồi,cậu nên dùng new delete vì nó còn dùng dài dài,còn mấy cái kia dùng lắm loạn lên thôi

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    -Bạn mở thư viện malloc ra xem là thấy hết tất cả các hàm cấp phát của c thôi.
    - Mấy hàm có chữ far là cấp phát vùng nhớ ngoài đoạn Data Segment. Bạn cần phải tìm hiểu về mô hình bộ nhớ trong dos mới hiểu được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    08 2008
    Bài viết
    5

    thanks meoconlongvang nha!
    nhưng sao mở được thư viện malloc được?
    chỉ mình đi.

Các đề tài tương tự

  1. Borland C++ Lỗi Help lỗi trong borland C++ 5.02
    Gửi bởi ko0lken trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 30-04-2013, 12:54 PM
  2. sử dụng đồ họa trong Borland C/C++ v5.02
    Gửi bởi lampv.86 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-11-2010, 05:04 PM
  3. Tạo một project trong Borland C++ 5.02
    Gửi bởi quanghuy9289 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 02-04-2010, 11:32 AM
  4. đồ họa trong borland c++3.1
    Gửi bởi calme1202 trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 0
    Bài viết cuối: 19-05-2008, 09:32 PM
  5. VỀ Graphic trong Borland C++
    Gửi bởi phstiger trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 18-10-2007, 07:38 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn