标签:
最近遇到的问题,具体如下:
#include <iostream>
using namespace std;
typedef void(*P[10])(bool& flag);
#define N 10000
#define M 10000
template<class T>
void fun(bool& flag)
{
int i;
static T** p=nullptr;
switch (flag)
{
case false:
p = (T**)new T*[N];
for (i = 0; i < N; i++)
p[i] = (T*)new T[M];
break;
case true:
for (i = 0; i < N; i++)
{
delete[] p[i];
p[i] = nullptr;
}
delete[] p;
p = nullptr;
break;
}
flag ^= true;
}
int main()
{
P pt;
pt[0] = fun<int>;
pt[1] = fun<char>;
pt[2] = fun<__int64>;
pt[3] = fun<float>;
pt[4] = fun<double>;
int i=0,j;
system("pause");
while(i < 5)
{
bool flag = false;
for (j = 0; j < 6; j++)
pt[i](flag);
i++;
}
system("pause");
return 0;
}执行情况如下:#include <iostream>
using namespace std;
typedef void(*P[10])(bool& flag);
#define N 100000000
//#define M 10000
template<class T>
void fun(bool& flag)
{
int i;
static T** p=nullptr;
switch (flag)
{
case false:
p = (T**)new T*[N];
// for (i = 0; i < N; i++)
// p[i] = (T*)new T[M];
break;
case true:
// for (i = 0; i < N; i++)
// {
// delete[] p[i];
// p[i] = nullptr;
// }
delete[] p;
p = nullptr;
break;
}
flag ^= true;
}
int main()
{
P pt;
pt[0] = fun<int>;
pt[1] = fun<char>;
pt[2] = fun<__int64>;
pt[3] = fun<float>;
pt[4] = fun<double>;
int i=0,j;
system("pause");
while(i < 5)
{
bool flag = false;
for (j = 0; j < 6; j++)
pt[i](flag);
i++;
}
system("pause");
return 0;
}标签:
原文地址:http://blog.csdn.net/a809146548/article/details/51332136