Mình có 1 đoạn code ngắn thế này !
#include<iostream>
using namespace std;
int main()
{
int a[4] = { 1, 2, 3, 4 };
int *p = a;
int *p2 = new int;
delete p;
delete a;
delete p2;
}
Biên dịch xảy ra lỗi !!Nhờ các bạn fix và giải thích với !!!
Mình có 1 đoạn code ngắn thế này !
#include<iostream>
using namespace std;
int main()
{
int a[4] = { 1, 2, 3, 4 };
int *p = a;
int *p2 = new int;
delete p;
delete a;
delete p2;
}
Biên dịch xảy ra lỗi !!Nhờ các bạn fix và giải thích với !!!
a, p và p2 thì chỉ delete được p2 thôi do nằm trong vùng nhớ heap sau khi cấp phát động bằng toán tử new. còn a và p nằm trong stack. bạn xem kỹ lại phần cấp phát động nhé!
a với p ko delete được nhé
p thì mình ko chắc nhưng a là hằng con trỏ rồi ko làm gì đc nó đâu.
cám ơn 2 bạn nha mình hiểu rồi !!!
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?