new/delete
new অপারেটর হিপে মেমরি aloket করার অনুরোধ করে। পর্যাপ্ত মেমরি থাকলে, এটি মেমরি পয়েন্টার ভেরিয়েবলে ইনিশিয়ালাইজ করে এবং এর অ্যাড্রেস রিটার্ন করে।
delete অপারেটর মেমরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। ইউজারকে তৈরি করা পয়েন্টার ভেরিয়েবল ডি-অ্যালোকেট করার সুবিধা দেয়।
C++-এ new/delete অপারেটর উদাহরণ:
উদাহরণ
#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;
}
আউটপুট
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/free
malloc() ফাংশনটি অনুরোধ করা বাইট সাইজ aloket করে এবং aloket করা মেমরির প্রথম বাইটের পয়েন্টার রিটার্ন করে। ব্যর্থ হলে নাল পয়েন্টার রিটার্ন করে।
free() ফাংশনটি malloc() দ্বারা aloket করা মেমরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। এটি পয়েন্টারের মান পরিবর্তন করে না অর্থাৎ এটি এখনও একই মেমরি লোকেশনকে পয়েন্ট করে।
C ভাষায় malloc/free উদাহরণ:
উদাহরণ
#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;
}
আউটপুট
Enter elements of array: 32 23 21 8 Sum: 84