Announcement

Collapse
No announcement yet.

cần sự giúp đở về pointer...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • cần sự giúp đở về pointer...

    Code:
    typedef struct
    {
    	int **arr,x,y;
    }bang;
    main()
    {
            int i;
            bang b;
            b.x=3; b.y=4;
            b.arr=(int**)malloc(b.x*sizeof(int *));
    	for(int i=0;i<b.y;i++) b.arr[i]=(int*)malloc(b.y*sizeof(int));
    }
    đấy là code cấp phát bộ nhớ cho con trỏ cấp 2... Anh chị ơi chỉ em cách giải phóng bộ nhớ của con trỏ cấp 2 với(viết tiếp đoạn code bên trên)...

  • #2
    PHP Code:
        // Dau tien, ta xoa cac vung nho da cap phat cho con tro cap 1
        
    for (b.; ++i)
           
    freeb.arr[i] );
        
    b.0;    

        
    // Tiep theo, ta xoa vung nho da cap phat cho con tro cap 2
        
    freeb.arr );
        
    b.0
    Mong giúp được bạn.
    Last edited by 10520100; 02-03-2014, 20:26.
    nguyendauit@gmail.com

    Comment


    • #3
      Originally posted by 13520692 View Post
      Code:
      typedef struct
      {
      	int **arr,x,y;
      }bang;
      main()
      {
              int i;
              bang b;
              b.x=3; b.y=4;
              b.arr=(int**)malloc(b.x*sizeof(int *));
      	for(int i=0;i<b.y;i++) b.arr[i]=(int*)malloc(b.y*sizeof(int));
      }
      đấy là code cấp phát bộ nhớ cho con trỏ cấp 2... Anh chị ơi chỉ em cách giải phóng bộ nhớ của con trỏ cấp 2 với(viết tiếp đoạn code bên trên)...
      - Giải phóng bộ nhớ như anh [MENTION=7355]10520100[/MENTION] đúng rồi, nhưng bạn bị sai 1 lỗi :
      + Ban đầu bạn cấp phát: b.x = 3
      + Vòng lặp bạn cho: i < b.y = 4 => Bạn xin có 3 nhưng bạn đòi nó cấp phát 4 lần
      Hãy theo đuổi sự ƯU TÚ - THÀNH CÔNG sẽ đến với bạn!

      Comment


      • #4
        Originally posted by 12520609 View Post
        - Giải phóng bộ nhớ như anh [MENTION=7355]10520100[/MENTION] đúng rồi, nhưng bạn bị sai 1 lỗi :
        + Ban đầu bạn cấp phát: b.x = 3
        + Vòng lặp bạn cho: i < b.y = 4 => Bạn xin có 3 nhưng bạn đòi nó cấp phát 4 lần
        b.x=3// xin cap phat hang
        b.y=4 // xin cap phat cot..
        ch em hỏi còn cách nào để giải phóng nửa không... em làm ròi.. chương trình chỉ chạy được 2 lần tới lần thứ 3 là nó bị lỗi...

        Comment


        • #5
          PHP Code:
          #include <stdio.h>
          #include <stdlib.h>


          // Dinh nghia kieu BANG
          typedef struct
          {
              
          int row;
              
          int column;
              
          int **arr;
          BANG;
          int main()
          {
              
          // Khoi tao cho bang
              // Row = 3
              // Column = 4
              
          BANG bang;
              
          bang.row 3;
              
          bang.column 4;

              
              
          // Xin cap phat bo nho
              
          bang.arr = (int **) malloc (bang.row sizeof(int *));
              for(
          int i bang.row ; ++ i)
                  
          bang.arr[i] = (int *) malloc (bang.column sizeof(int));


              
          // Giai phong bo nho
              
          for(int i bang.row ; ++ i)
                  
          free(bang.arr[i]);
              
          free(bang.arr);


              
          // Chuong trinh chay thanh cong
              
          return 0;

          Bạn thử code này thử xem.
          nguyendauit@gmail.com

          Comment


          • #6
            Originally posted by 13520692 View Post
            b.x=3// xin cap phat hang
            b.y=4 // xin cap phat cot..
            ch em hỏi còn cách nào để giải phóng nửa không... em làm ròi.. chương trình chỉ chạy được 2 lần tới lần thứ 3 là nó bị lỗi...
            Để dễ hiểu em có thể vẽ ra:
            - Lần 1: b.x =3 => cấp phát 3 ô nhớ: [0]
            [1]
            [2]
            - Lần 2: Nếu em dùng vòng lặp với đk: i < b.y = 4
            [0][][][]
            [1][][][]
            [2][][][]
            [3][][][]
            - Có nghĩa là em đã dư 1 lần cuối cùng => ĐK vòng lặp i < b.x = 3
            Hãy theo đuổi sự ƯU TÚ - THÀNH CÔNG sẽ đến với bạn!

            Comment


            • #7
              tks.. cac a em lm dc roi`

              Comment

              LHQC

              Collapse
              Working...
              X