Announcement
Collapse
No announcement yet.
cần sự giúp đở về pointer...
Collapse
X
-
Originally posted by 13520692 View Postb.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...
- 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
Leave a comment:
-
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 = 0 ; i < bang.row ; ++ i)
bang.arr[i] = (int *) malloc (bang.column * sizeof(int));
// Giai phong bo nho
for(int i = 0 ; i < bang.row ; ++ i)
free(bang.arr[i]);
free(bang.arr);
// Chuong trinh chay thanh cong
return 0;
}
Leave a comment:
-
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.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...
Leave a comment:
-
Originally posted by 13520692 View PostCode: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)); }
+ 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
Leave a comment:
-
PHP Code:// Dau tien, ta xoa cac vung nho da cap phat cho con tro cap 1
for (i = 0 ; i < b.x ; ++i)
free( b.arr[i] );
b.x = 0;
// Tiep theo, ta xoa vung nho da cap phat cho con tro cap 2
free( b.arr );
b.y = 0;
Last edited by 10520100; 02-03-2014, 20:26.
Leave a comment:
-
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)); }
Tags: None
Leave a comment: