#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
//#define TEST
int main()
{
int size = 100;
int **b = new int*[size];
b[0] = new int[size *3];
memset(b[0], 0, sizeof(int) * size * 3);
for (int i = 1; i < size; i++)
{
b[i] = b[i-1] + 3;
}
for (int i = 0; i < size; i++)
{
b[i][0] = i*3;
b[i][1] = i*3 + 1;
b[i][2] = i*3 + 2;
}
// cout << b[0][0] << " " << b[0][1] << " " << b[0][2] << endl;
int **b1 = new int*[size];
b1[0] = new int[size *3];
memset(b1[0], 0, sizeof(int) * size * 3);
for (int i = 1; i < size; i++)
{
b1[i] = b1[i-1] + 3;
}
for (int i = 0; i < size; i++)
{
b1[i][0] = b[i][0];
b1[i][1] = b[i][1];
b1[i][2] = b[i][2];
cout << "i="<< i << " "<< b1[i][0] << " " << b1[i][1] << " " << b1[i][2] << endl;
}
#ifdef TEST //这种方式debug的时候会出现段错误
for (int i = 0; i < size; i++)
{
delete[] b1[i];
b1[i] = NULL;
}
delete[] b1;
b1 = NULL;
#else
delete[] b1[0];
b1[0] = NULL;
delete[] b1;
b1 = NULL;
#endif
#ifdef TEST
for (int i = 0; i < size; i++)
{
delete[] b[i];
b[i] = NULL;
}
delete[] b;
b = NULL;
#else
delete[] b[0];
b[0] = NULL;
delete[] b;
b = NULL;
#endif
return 0;
}