Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa new / delete và malloc / free trong C / C ++ là gì?

mới / xóa

Toán tử mới yêu cầu cấp phát bộ nhớ trong heap. Nếu có đủ bộ nhớ, nó sẽ khởi tạo bộ nhớ cho biến con trỏ và trả về địa chỉ của nó.

Toán tử xóa được sử dụng để phân bổ bộ nhớ. Người dùng có đặc quyền phân bổ biến con trỏ được tạo bởi toán tử xóa này.

Đây là một ví dụ về toán tử new / delete trong ngôn ngữ C ++,

Ví dụ

#include <iostream>
using namespace std;

int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(299.121);
   int *ptr3 = new int[28];

   *ptr1 = 28;

   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   
   if (!ptr3)
   cout << "Allocation of memory failed\n";
   else {
      for (int i = 10; i < 15; i++)
      ptr3[i] = i+1;

      cout << "Value of store in block of memory: ";
      for (int i = 10; i < 15; i++)
      cout << ptr3[i] << " ";
   }
   delete ptr1;
   delete ptr2;
   delete[] ptr3;

   return 0;
}

Đầu ra

Đây là kết quả

Value of pointer variable 1 : 28
Value of pointer variable 2 : 299.121
Value of store in block of memory: 11 12 13 14 15

malloc / miễn phí

Hàm malloc () được sử dụng để cấp phát kích thước byte được yêu cầu và nó trả về một con trỏ đến byte đầu tiên của bộ nhớ được cấp phát. Nó trả về con trỏ null, nếu không thành công.

Hàm free () được sử dụng để phân bổ vùng nhớ được cấp phát bởi hàm malloc (). Nó không thay đổi giá trị của con trỏ, có nghĩa là nó vẫn trỏ đến cùng một vị trí bộ nhớ.

Đây là một ví dụ về malloc / free trong ngôn ngữ C,

Ví dụ

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));

   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }

   printf("\nEnter elements of array : ");

   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   free(p);

   return 0;
}

Đầu ra

Đây là kết quả -

Enter elements of array : 32 23 21 8
Sum : 84