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但是考虑兼容性,考虑用哪个好