c++ - 编程设计思路?

 

问题描述:

我有段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;
}

 

第 1 个答案:

想观测,那直接上传日志不就行了吗


 

第 2 个答案:

你的这个说法很奇怪,调用方担心内存不够,而被调用方认为内存足够,除非调用方是通过 RPC 方式做的远程调用,否则,调用方与被调用方使用的是同一台机器的内存,怎么可能出现一个认为够,一个认为不够呢?
所以,按我的理解,你需要尊重调用方的关切,因为你不知道他们还额外需要多少内存。那么最好的办法就是你的这个函数在 delete[] a 之前把 a 的内容输出到 log 中去,你需要检测 a 的结果的时候就去查 log 好了。


pc端适配用vw好还是rem好,一个登陆页,想用vw但是考虑兼容性,考虑用哪个好