Saturday, September 11, 2010

Toán tử delete và delete[]

Nếu khi biến trỏ không cần dùng đến nữa, chúng ta có thể xóa bỏ các ô nhớ của nó để giải phóng bộ nhớ động. Quá trình này được thực thi bởi toán tử delete.

delete num; delete[] nums;
Cách viết thứ nhất dùng để giải phóng con trỏ đơn tầng. Cách thứ hai dùng cho con trỏ đa tầng (hai tầng trở lên).
Toán tử delete chỉ có tác dụng với con trỏ được khởi tạo bởi toán tử new hoặc con trỏ null.

Chương trình Kết quả
#include  #include 
using namespace std;
int main()
{
double *ptr[ 5];
for ( int i = 0; i < 5; i++ )
{
ptr[ i ] = new (nothrow) double[ 50000000 ];

if (ptr[i]!=0)
cout << ”Allocation is ok”;
else
cout<<”Allocation fail”;
}
delete[] ptr;
return 0;
}
Allocation is ok Allocation is ok
Allocation is ok
Allocation is ok
Allocation fail
Nếu hệ thống của bạn không cho ra dòng “Allocation fail”, bạn có thể tăng thêm giá trị trong mảng *ptr.
Bạn lưu ý, trong ANSI-C, hàm malloc, calloc, realloc và free được dùng thay cho new và delete và hiển nhiên chúng cũng hoạt động trên C++. Chúng ta không thảo luận chi tiết về hàm này, vì theo xu hướng của lập trình C++ hiện đại, người ta sử dụng hai toán tử mà ta thảo luận ở trên.

No comments:

Post a Comment

Popular Posts