فرض کنید تابعی تعریف می کنیم که آدرس یک رشته را می گیره و چاپ می کنه به صورت زیر:
#include <iostream>
using namespace std;
void func1(char* str){
cout << str << endl;
}
int main(){
char str[] ="hello";
func1(str);
return 0;
}
فرقی نداره هر چند بعدی باشه اگر تک متغیر new کردید با delete و اگر به new مقداری را به عنوان تعداد دادید هنگام آزادسازی به جای delete باید از delete[] استفاده کنید.
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int*** ptrInt = new int**[3];
for(int i(0); i < 3; i++)
ptrInt[i] = new int*[3];
for(int i = 0; i < 3; i++)
{
for(int j(0); j < 3; j++)
ptrInt[i][j] = new int[3];
}
for(int i = 0; i < 3; i++)
{
for(int j(0); j < 3; j++)
for(int k(0); k < 3; k++)
ptrInt[i][j][k] = k;
}
for(int i = 0; i < 3; i++)
{
for(int j(0); j < 3; j++)
for(int k(0); k < 3; k++)
cout << "ptrInt[" << i << "][" << j << "][" << k << "]: " << ptrInt[i][j][k] << endl;
}
// now freeing memory:
for(int i = 0; i < 3; i++)
{
for(int j(0); j < 3; j++)
delete[] ptrInt[i][j];
delete[] ptrInt[i];
}
delete[] ptrInt;
cout << endl << endl << endl;
return 0;
}