作者在 2006-10-27 12:59:00 发布以下内容
今天看到了一位网友提的问题中涉及了动态开辟的空间的问题, 这个问题是一再有人提的,而往往很多C++ 书籍没有给出这个问题的解答, 有些书籍给出了动态开辟的代码却忘记了删除所开辟的空间。 就这个问题的解答特写了下面的这个演示代码。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int rows = 2;
int cols = 3;
// create a dynamic array
int ** array = NULL;
array = new int * [rows];
for(int i = 0; i < rows; i++)
{
array = new int[cols];
// init this 2d array
for(int j = 0; j<cols; j++)
{
array[j] = (i+1)*(j+1);
}
}
// to check what we have done
for(int i = 0; i < rows; i++)
{
for(int j = 0; j<cols; j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
}
// before you leave the program
// you should release the space what you have dynamically allocated
// to delete the allocation
for(int i = 0; i<rows; i++)
{
delete [] array;
array = NULL; // to avoid wild pointer
}
delete [] array;
array = NULL; // to avoid wild pointer
system("pause");
return 0;
}
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int rows = 2;
int cols = 3;
// create a dynamic array
int ** array = NULL;
array = new int * [rows];
for(int i = 0; i < rows; i++)
{
array = new int[cols];
// init this 2d array
for(int j = 0; j<cols; j++)
{
array[j] = (i+1)*(j+1);
}
}
// to check what we have done
for(int i = 0; i < rows; i++)
{
for(int j = 0; j<cols; j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
}
// before you leave the program
// you should release the space what you have dynamically allocated
// to delete the allocation
for(int i = 0; i<rows; i++)
{
delete [] array;
array = NULL; // to avoid wild pointer
}
delete [] array;
array = NULL; // to avoid wild pointer
system("pause");
return 0;
}