new و delete (new and delete)
اینجا با new و delete آشنا می شویم. این دو ابزار برای مدیریت دستی حافظه هستند. مثل رزرو صندلی و آزاد کردنش در سینما است.
کلیدواژه new
با new می توانی خودت حافظه بسازی. سپس با اشاره گر (Pointer: متغیرِ آدرس) به آن دسترسی داری.
int* ptr = new int;
*ptr = 35;
cout << *ptr;
نکته: new int یک خانه عددی می سازد. ptr آدرس آن را نگه می دارد. با *ptr مقدار را می نویسی یا می خوانی.
کلیدواژه delete
هرچه را با new ساختی، باید با delete پاک کنی. وگرنه حافظه نشت می کند.
delete ptr;
هشدار: فراموشی delete باعث Memory Leak می شود. برنامه کند یا کرش می کند.
آرایه پویا با new[] و delete[]
برای آرایه ها از new[] و delete[] استفاده کن. اندازه ناشناخته؟ این راه حل است.
#include <iostream>
#include <string>
using namespace std;
int main() {
int numGuests;
cout << "How many guests? ";
cin >> numGuests;
if (numGuests <= 0) {
cout << "Number of guests must be at least 1.\n";
return 0;
}
string* guests = new string[numGuests];
cin.ignore();
for (int i = 0; i < numGuests; i++) {
cout << "Enter name for guest " << (i + 1) << ": ";
getline(cin, guests[i]);
}
cout << "\nGuests checked in:\n";
for (int i = 0; i < numGuests; i++) {
cout << guests[i] << "\n";
}
delete[] guests;
return 0;
}
نکته: برای یک متغیر تکی از new/delete استفاده کن. برای آرایه، از new[]/delete[].
تمرین مرحله ای
- یک اشاره گر عددی بساز.
- با
newحافظه بگیر. - مقدار بده و چاپ کن.
- در پایان با
deleteآزاد کن.
پیوندها و ادامه مطالعه
برای مرور پایه ها، صفحه مدیریت حافظه را ببین. همچنین به اشاره گرها و ارجاع زدایی سر بزن. اگر لازم شد، از new و delete دوباره بازدید کن.
جمع بندی سریع
newحافظه می سازد.deleteحافظه را آزاد می کند.- برای آرایه ها از
new[]/delete[]استفاده کن. - فراموشی
deleteنشت حافظه می آورد. - اشاره گر، آدرس حافظه را نگه می دارد.