01/10/2018, 09:35
Cấp phát và xóa bộ nhớ động nhiều lần sau mỗi vòng while() nó nên ko?
giả sử mình có
while(true)
{
int** a=new int*[n];
for( int i=0;i<n;i++) a[i] = new int[n];
các câu lệnh làm thay đổi giá trị a[n][n]
for(int i = 0; i < n; i++) delete[]a[i];
delete[]a;
}
Bài liên quan
Cái này là sử dụng con trỏ trỏ đến con trỏ
**a để cấp phát 1 mảng 2 chiều
Con trỏ thứ 1 trỏ đến 1 mảng con trỏ. Mỗi con trỏ trong mảng trỏ đến 1 mảng int
Nên khi giải phóng phải làm ngược lại
cái dưới mình giải phóng bộ nhớ đúng ko
xong vào vòng lặp mới lại khái báo lại liệu có dc ko nhỉ
Như trên bạn để trong vòng while cấp phát xong rồi xóa luôn à.k dùng à
int *a, m,n;
Cấp phát
a =new int[m];
for(int i=0; i<m ; i++) a[i] = new int[n];
Giải phóng
for(int i=0; i<m ; i++) delete a[i];
delete a;
delete []a ; là xóa mảng con trỏ
delete a; là xóa con trỏ
sau mỗi vòng while thì giá trị của n thay đổi
vậy có nên xóa cả mảng đi rồi cấp phát lại hay để nguyên ??
Mỗi vòng while của bạn mình thấy nó cấp phát xong xóa luôn có nhập giá trị cho mảng hay là thay đổi gì đâu
có thay đổi và nhập giá trị đấy
Trên cái dòng bạn nói à
Nhưng như thế
Cấp phát xong
Nhập mảng xong
Bạn xóa đi thì mục đích bt bạn làm là gì
mình đang làm game có nhiều màn chơi
mà mỗi màn là một giá trị của n
M k biết bạn đang làm project gì nên khó tl lắm
Nhưng như trên bnj phải xử lý mảng a trước khi nó bị xóa mất khi chạy xog mỗi vòng while
thôi vậy, cảm ơn bạn nhé