我有段C++代码,如下:
int getB()
{
int a = new int[999999];
...
int b = 3 * a[0]^3+a[900000]^2;
delete[] a;
return b;
}
这个函数是第三方调用,他们只关心b的结果,但他们运行内存有限不能存储a。但由于我是开发方,运行内存足够,同时很关心a的结果,希望运行完后还能保留a的结果进行观测,有什么好的办法同时满足两边的需求。
已经想到的方法是在a释放前存到全局变量gA中,但如有很多地方出现这种需求,代码会显得很凌乱,是否有第三方库实现类似功能。
int getB()
{
int a = new int[999999];
...
int b = 3 * a[0]^3+a[900000]^2;
#ifdef MY_ENV
memcpy(gA, a,sizeof(int)*999999);
// 最好有统一宏保存变量,如MY_ENV_SET("gA", gA)、MY_ENV_GET("gA");
// 而且gA无论是什么类型都能兼容,最好不用内存拷贝
#endif
delete[] a;
return b;
}
想观测,那直接上传日志不就行了吗